@synthesize合成实例变量规则
- 如果指定了成员变量的名称,会生成一个指定的名称的成员变量,
- 如果这个成员已经存在了就不再生成了.
- 如果是 @synthesize foo; 还会生成一个名称为foo的成员变量,也就是说:如果没有指定成员变量的名称会自动生成一个属性同名的成员变量,
- 如果是 @synthesize foo = _foo; 就不会生成成员变量了.
假如 property 名为 foo,存在一个名为 _foo 的实例变量,那么还会自动合成新变量么
不会
@property(nonatomic, copy) NSString *name;
/*
下面一行代码会报出警告
Auto property synthesis will not synthesize property "_name" because it cannot
share an ivar with another synthesized property
*/
@property(nonatomic,copy) NSString *_name;
网友评论