Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 这样行吗?_Objective C - Fatal编程技术网

Objective c 这样行吗?

Objective c 这样行吗?,objective-c,Objective C,这就是混乱的开始: 通常最好使用self以外的变量来引用类内的实例 方法: 事实上,与其在类方法中将alloc消息发送给类,不如将alloc发送给self。这样,如果类是子类,并且子类接收到rectangleOfColor:消息,则返回的实例将与子类的类型相同(例如,NSArray的数组方法由NSMutableArray继承) 否,它将导致“UILable undeclared(首次在此函数中使用)”错误。否,它将不起作用。在第一行中,您将向类的实例发送alloc消息。在您从Apple文档中复制

这就是混乱的开始:

通常最好使用self以外的变量来引用类内的实例 方法:

事实上,与其在类方法中将alloc消息发送给类,不如将alloc发送给self。这样,如果类是子类,并且子类接收到rectangleOfColor:消息,则返回的实例将与子类的类型相同(例如,NSArray的数组方法由NSMutableArray继承)


否,它将导致“UILable undeclared(首次在此函数中使用)”错误。

否,它将不起作用。在第一行中,您将向类的实例发送
alloc
消息。在您从Apple文档中复制的示例中,他们将
alloc
消息发送到类
Rectangle
。区别在于你的代码行(显然)在一个实例方法中,而苹果的示例在类方法中


就像上面提到的@Denis一样,你可以通过说
[[self class]alloc]init]
来做你想做的事情,但实际上,不要这样做。您几乎不需要这种灵活性,它只会混淆新对象的意图

意味着两者之间有什么区别:UILabel*testLbl=[[self alloc]init];UILabel*testLbl=[[UILabel alloc]init];您是否在UILabel实例方法中运行此操作?然后您可以使用
[[[self class]alloc]init]
UILabel *testLbl = [[self alloc] init];
+ (id)rectangleOfColor:(NSColor *)color {
id newInstance = [[Rectangle alloc] init]; // GOOD [newInstance setColor:color]; return [newInstance autorelease];
}
+ (id)rectangleOfColor:(NSColor *)color {
id newInstance = [[self alloc] init]; // EXCELLENT [newInstance setColor:color]; return [newInstance autorelease];
}