【发布时间】:2011-04-14 03:48:46
【问题描述】:
在现代运行时。 您可以声明属性,而无需在接口中声明同名 ivar 喜欢
@interface MyClass: NSObject
{
NSString *str2;
}
@property (retain) NSString *str1;
@property (retain) NSString *str2;
@end
我知道,这会自动为您生成一个 str1 ivar,因为在实现中,您可以访问 self.str1 或纯粹的 str1。
但我的问题是,str1和str2有什么区别吗?
如果它们相同,为什么类扩展(一个没有名称的类别)允许添加一个新的声明属性,该属性也会生成一个 ivar,但不允许在类扩展中添加一个 ivar 实例?(我知道 LLVM 2.0或以后允许这样做,但 gcc 不允许)
【问题讨论】:
标签: objective-c compiler-construction properties class-extensions