首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改目标-c中类别中的只读属性

问如何更改目标-c中类别中的只读属性
EN

Stack Overflow用户
提问于 2014-08-02 18:11:04
回答 1查看 2.4K关注 0票数 2

在我的*.h文件中,我具有只读的foo属性。

我通过使用_foo = _foo + 1;更新该属性赢得了其他一些公共方法

现在我在那个*.h文件上有了分类。

我需要更新类别中的foo属性。

如果我使用_foo,那么我就得到了Use of undeclared identifier '_foo''

如果我使用self.foo = 5,那么我就得到了Assignment to readonly property

我知道我可以通过将foo属性设置为readwrite来修复这个问题,但是我想避免这种情况。

问题

如何解决这个问题?

另外,是否可以将属性设置为类之外的只读属性,而可以设置为类和类别中的readwrite属性?

这就解决了这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-02 18:27:16

您也可以在头文件中声明属性的后备实例变量,这样编译器就可以在类别中看到它:

代码语言:javascript
复制
@interface MyClass : NSObject
{
    int _foo;
}
@property (readonly) int foo;
@end

显式声明此变量将用于支持属性(仅为安全起见):

代码语言:javascript
复制
@implementation MyClass
@synthesize foo = _foo;
...
@end

然后在类别中引用_foo应该很好:

代码语言:javascript
复制
@implementation MyClassCategory

- (void)someMethod
{
    _foo++;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25097990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档