iOS 中setter和getter方法为什么不可以同时写

单独写setter方法或者getter方法不会报错。

但是同时写,会报错,说不认识成员变量。

例如属性 NSString * name;

-(void)setName:(NSString *)name

{

_name = name;

}

-(NSString *)name

{

return _name;

}

回答:

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就行了 反正效果一样

以上是 iOS 中setter和getter方法为什么不可以同时写 的全部内容, 来源链接: www.h5w3.com/185903.html

回到顶部