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