【问题标题】:Setting read only property a value [duplicate]将只读属性设置为值[重复]
【发布时间】:2016-04-12 12:06:33
【问题描述】:

我有一个只读属性

@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 我在下面得到了正确答案。 谢谢安德烈·斯洛塔!

【问题讨论】:

  • @originaluser2 - 我不同意您的“重复”标记。请阅读我的编辑。谢谢
  • @Josh Caswell-我不同意您的“重复”标记。请阅读我的编辑。谢谢

标签: ios objective-c iphone


【解决方案1】:

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

.h:

@property (nonatomic, readonly)  NSInteger keepalive;

.m:

@property (nonatomic, readwrite)  NSInteger keepalive;

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

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

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 2013-07-26
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多