@synthesize作用

2019-08-15  本文已影响0人  希罒

属性合成器( auto synthesis),这个过程由编译器在编译期执行,它会生成get/set方法和带下划线的私有变量

@interface CYLPerson : NSObject 
@property NSString *name; 
@end

在上例中,会自动生成_name的实例变量。也可以在类的实现代码里面通过 @synthesize关键字来指定实例变量的名字:

@implementation CYLPerson 
@synthesize name = _myName; 
@end



@systhesize合成实例变量规则,有以下几点:

sythesis.png

以下几种情况是不会autosynthesis(自动合成):

  1. 同时重写了 setter 和 getter 时
  2. 重写了只读属性的 getter 时
  3. 使用了 @dynamic 时
  4. 在 @protocol 中定义的所有属性
  5. 在 category 中定义的所有属性
  6. 重载的属性

以上情况,如果想访问实例变量会报错:“Use of undeclared identifier '_foo'”, 你只能手动合成ivar:@synthesize foo = _foo;

上一篇下一篇

猜你喜欢

热点阅读