首页 > 关于set方法的问题

关于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;就会报错,如图:


但是如果只写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就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了。。。这句没看明白,能解释一下吗

【热门文章】
【热门文章】