我在一个自定义的NSObject类里面添加了一个属性,叫做token,
然后,我想在.m文件夹里面重写他的set方法和get方法:
- (void)setToken:(NSString *)token
{
_token = token;
[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (NSString *)token
{
return [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
}
但是每次我只要两个方法都写上了,上面那行:_token = token;就会报错,如图:
但是如果只写set方法,不写get方法了它又不会报错。
请大神帮我分析下到底是咋回事??如何解决。
=======================
.h界面有写属性。
@property(strong, nonatomic) NSString *token
用 strong 不用 copy 试一下
当你复写了get和set方法之后@property默认生成的@synthesize就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了。你如果要复写set、get方法你就必须要自己声明实例变量。一楼手动写上@synthesize也是一种比较暴力的方法。
@interface testClass : NSObject
{
NSString *_token;
}
@property (nonatomic) NSString *token;
@end
@Hancock_Xu 正解!
@synthesize _token = token;
是否声明了token
?
看报错信息貌似没有找到属性
interface
中有加入声明吗?
@property(nonatomic,strong) NSString *token; //这句话存在不?
@Hancock_Xu @property默认生成的@synthesize就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了。。。这句没看明白,能解释一下吗