84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
单独写setter方法或者getter方法不会报错。
但是同时写,会报错,说不认识成员变量。
例如属性 NSString * name;
-(void)setName:(NSString *)name{_name = name;}
-(NSString *)name{return _name;}
业精于勤,荒于嬉;行成于思,毁于随。
objective-c下如果某属性的getter,setter都要重写的话需要加上@synthesize propertyName = _propertyName;至于为什么网上有很多详细的文章分析,可以去看看
objective-c
getter
setter
@synthesize propertyName = _propertyName;
如果同时重写了getter和setter方法,那么系统就不会帮你自动生成这个成员变量,所以当然报错说不认识这个成员变量。先手动生成成员变量,然后再同时重写了getter和setter方法。
BOOL _carOwner;
#pragma mark - getters and setters -(void)setCarOwner:(BOOL)carOwner { _carOwner = carOwner; // 自定义操作 [[NSUserDefaults standardUserDefaults] setBool:_carOwner forKey:@"KeyIsCarOwner"]; [[NSUserDefaults standardUserDefaults] synchronize]; } - (BOOL)carOwner { // 自定义操作 id result = [[NSUserDefaults standardUserDefaults] valueForKey:@"KeyIsCarOwner"]; if (result) { return [[[NSUserDefaults standardUserDefaults] valueForKey:@"KeyIsCarOwner"] boolValue]; } return _carOwner; }
因为你写错了啊。(:з」∠)写成self-> name = name ;
刚去试了下,确实像你说的。不知道什么原因。加上@synthesize name = _name;语法之后就不报错了。
用self.name就行了 反正效果一样
objective-c
下如果某属性的getter
,setter
都要重写的话需要加上
@synthesize propertyName = _propertyName;
至于为什么网上有很多详细的文章分析,可以去看看
如果同时重写了getter和setter方法,那么系统就不会帮你自动生成这个成员变量,所以当然报错说不认识这个成员变量。先手动生成成员变量,然后再同时重写了getter和setter方法。
因为你写错了啊。(:з」∠)写成self-> name = name ;
刚去试了下,确实像你说的。不知道什么原因。加上@synthesize name = _name;语法之后就不报错了。
用self.name就行了 反正效果一样