这个@synthesize的声明在做什么?

时间:2011-09-16 10:20:29

标签: objective-c cocoa properties

给出以下类def:

@interface MyController : OtherController {
    NSString *_ID;
}
@property(nonatomic,retain) NSString *ID;
@end

以及以下实施:

@implementation DRMControllerNDS
@synthesize ID =_ID;
@end

@synthesize声明在这里做什么?具体来说,我们为什么要将_ID实例变量值设置为ID属性?执行中此时_ID不是nil吗?我已经看过这个构造多次使用了,我还没有理解它的用途......

任何人都能解释一下吗?

2 个答案:

答案 0 :(得分:4)

用简单的英文,@synthesize行说“为属性创建getter和setter方法”ID“,但是不要使用名为”ID“的实例变量(默认值)来存储值,使用实例变量称为“_ID”。“

答案 1 :(得分:0)

如果您尝试访问instanceOfMyController._ID,则会收到错误,因为._ID属性不存在; @synthesize指令允许您使用点符号。

有关详情,请参阅this question