我们使用@property 关键字声明属性并在实现文件中综合它。我的问题是,
如果我使用@property 关键字声明一个属性,并在接口(interface) block 中声明一个同名变量怎么办?例如,考虑以下代码,
界面:
@interface myClass : NSObject {
NSString *myClass_name; // LINE 1
}
@property(nonatomic, retain) NSString *myClass_name; // LINE 2
@end
执行:
@implementation myClass
@synthesize myClass_name // LINE 3
@end
在 LINE 1 中声明 myClass_name 会有什么问题吗?像任何引用问题或任何不必要的内存消耗问题?
最佳答案
不,事实上,声明这样的属性是期望的。您可以将您的声明替换为:
@interface MyClass : NSObject {
NSString *ivar;
}
@property (nonatomic, retain) NSString *myClass_name;
@end
然后将您的实现更改为
@implementation MyClass
@synthesize myClass_name = ivar;
@end
(如果您不指定 = some_ivar,它将假定 ivar 与属性具有相同的名称。)
你总是需要有以下几行:
合成属性时,如果不指定使用哪个ivar(最后使用
=ivar
),将假定存在与属性同名的ivar。
关于iphone - 申报属性(property)的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4559852/