单独写setter方法或者getter方法不会报错。
但是同时写,会报错,说不认识成员变量。
例如属性 NSString * name;
-(void)setName:(NSString *)name
{
_name = name;
}
-(NSString *)name
{
return _name;
}
单独写setter方法或者getter方法不会报错。
但是同时写,会报错,说不认识成员变量。
例如属性 NSString * name;
-(void)setName:(NSString *)name
{
_name = name;
}
-(NSString *)name
{
return _name;
}
如果同时重写了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;
}
2 回答1k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答1.1k 阅读
objective-c
下如果某属性的getter
,setter
都要重写的话需要加上
@synthesize propertyName = _propertyName;
至于为什么网上有很多详细的文章分析,可以去看看