可能重复:
Property Declaration and Automatic Backing Storage Allocation
我知道@property和@synthesize指令的基本功能,但最近我找到了一个示例代码:
TTDownloader中没有任何类成员变量,但它完美无缺。
TTDownloader *dl = [[TTDownloader alloc] init];
NSLog(@"%d %@", dl.aaa, dl.bbb); // result: 0 (null)
dl.aaa = 101;
dl.bbb = [NSNumber numberWithInt:201];
NSLog(@"%d %@", dl.aaa, dl.bbb); // result: 101 201
我的问题如下:
aaa和bbb在哪里?我甚至没有地方可以存放这些数据。 TTDownloader为空(除了从NSObject派生的一些变量和函数)。
我是否遗漏了Objective C的一些强大功能?它们是在Obj-C编程指南中描述的,我只是阅读了它的一部分。
提前致谢。
答案 0 :(得分:1)
在除32位OS X之外的所有平台上的现代运行时,当您合成属性时,如果尚未声明实例变量,则会自动创建它。所以
aaa和bbb是属性,即每个都是一对合成的存取方法,分别使用实例变量_aaa和_bbb。
是的,见上文。