84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
单独写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就行了 反正效果一样