将只读属性设置为值

时间:2016-04-12 12:06:33

标签: ios objective-c iphone

我有一个只读属性

@property (nonatomic, readonly)  NSInteger   keepalive;

使用getter方法

-(NSInteger)keepalive
{
    return _keepalive / 1000;
}

错误 - 使用未声明的标识符

尝试在init方法

中设置值
- (instancetype)init
{
    self = [super init];

    if (self)
    {
        _keepalive = 25000;
    }
    return self;
}

错误 - 使用未声明的标识符

无法理解为什么以及使用getter获得只读属性的正确方法。

编辑: 我不想按照评论中的建议添加synthesize,因为它不再需要了 - as stated here我在下面得到了正确的答案。 谢谢AndréSlotta!

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以在实现文件中将该属性重新声明为readwrite:

·H:

@property (nonatomic, readonly)  NSInteger keepalive;

的.m:

@property (nonatomic, readwrite)  NSInteger keepalive;

这使您可以在实现中使用编译器生成的原子设置器和getter,但不会将setter暴露给世界其他地方。

(见https://www.bignerdranch.com/blog/property-values/