关于set方法的问题

我在一个自定义的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;就会报错,如图:

clipboard.png
但是如果只写set方法,不写get方法了它又不会报错。
请大神帮我分析下到底是咋回事??如何解决。

=======================
.h界面有写属性。
clipboard.png

阅读 9.9k
6 个回答

@synthesize _token = token;

当你复写了get和set方法之后@property默认生成的@synthesize就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了。你如果要复写set、get方法你就必须要自己声明实例变量。一楼手动写上@synthesize也是一种比较暴力的方法。

@interface testClass : NSObject
{
    NSString *_token;
}

@property (nonatomic) NSString *token;

@end

是否声明了token?

看报错信息貌似没有找到属性

interface中有加入声明吗?

@property(nonatomic,strong) NSString *token;  //这句话存在不?
新手上路,请多包涵

@property(strong, nonatomic) NSString *token
strong 不用 copy 试一下

@Hancock_Xu @property默认生成的@synthesize就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了。。。这句没看明白,能解释一下吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题