当使用property声明一个属性的时候
一:系统会自动隐式的使用@synthesize生成一个变量和getter/setter方法。
如:
@property(nonatomic,strong)NSString *value;
@synthesize value = _value;
-(void)setValue:(NSString *)value{}
-(NSString *)value{}
当手动实现getter/setter方法的时候,则不会默认使用@synthesize生成变量,否则在使用 “_变量”访问的时候,会报错。
两种解决方法就是:
1.要手动添加@synthesize生成变量;@synthesize value = _value;
2.在{}里再次声明成员变量 NSString *_value;
二:@dynamic和@synthesize相反,当使用@dynamic修饰一个属性的时候,则是告诉编译器getter/setter方法由手动生成,不需要系统生成@synthesize和getter/setter。
@dynamic value;
-(void)setValue:(NSString *)value{}
-(NSString *)value{}