ios - 关于set方法的问题
伊谢尔伦
伊谢尔伦 2017-04-17 14:58:50
[iOS讨论组]

我在一个自定义的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界面有写属性。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(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 正解!

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号