在我的*.h文件中,我具有只读的foo属性。
我通过使用_foo = _foo + 1;更新该属性赢得了其他一些公共方法
现在我在那个*.h文件上有了分类。
我需要更新类别中的foo属性。
如果我使用_foo,那么我就得到了Use of undeclared identifier '_foo''
如果我使用self.foo = 5,那么我就得到了Assignment to readonly property
我知道我可以通过将foo属性设置为readwrite来修复这个问题,但是我想避免这种情况。
问题
如何解决这个问题?
另外,是否可以将属性设置为类之外的只读属性,而可以设置为类和类别中的readwrite属性?
这就解决了这个问题。
发布于 2014-08-02 18:27:16
您也可以在头文件中声明属性的后备实例变量,这样编译器就可以在类别中看到它:
@interface MyClass : NSObject
{
int _foo;
}
@property (readonly) int foo;
@end显式声明此变量将用于支持属性(仅为安全起见):
@implementation MyClass
@synthesize foo = _foo;
...
@end然后在类别中引用_foo应该很好:
@implementation MyClassCategory
- (void)someMethod
{
_foo++;
}https://stackoverflow.com/questions/25097990
复制相似问题