【发布时间】:2011-02-01 11:42:34
【问题描述】:
UILabel *testLbl = [[self alloc] init];
这就是混乱的开始:
通常最好使用 self 以外的变量来引用类中的实例 方法:
+ (id)rectangleOfColor:(NSColor *)color {
id newInstance = [[Rectangle alloc] init]; // GOOD [newInstance setColor:color]; return [newInstance autorelease];
}
实际上,与其在类方法中将alloc消息发送给类,不如将alloc消息发送给self。这样,如果类被子类化,并且被子类接收到了 rectangleOfColor: 消息,返回的实例将与子类的类型相同(例如,NSArray 的数组方法被 NSMutableArray 继承)。
+ (id)rectangleOfColor:(NSColor *)color {
id newInstance = [[self alloc] init]; // EXCELLENT [newInstance setColor:color]; return [newInstance autorelease];
}
【问题讨论】:
-
表示两者有什么区别: UILabel *testLbl = [[self alloc] init]; UILabel *testLbl = [[UILabel alloc] init];
-
你是在 UILabel 实例方法中运行这个吗?那么你可以使用
[[[self class] alloc] init];
标签: objective-c