gpt4 book ai didi

ios - 如何在 objective-c 中更改类别中的只读属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:27:55 25 4
gpt4 key购买 nike

在我的 *.h 文件中,我有一个只读的 foo 属性。
我通过使用 _foo = _foo + 1;

更新该属性 win 一些其他公共(public)方法

现在我在那个 *.h 文件上有了类别。
我需要更新类别中的 foo 属性。

如果我使用 _foo 然后我得到 Use of undeclared identifier '_foo''
如果我使用 self.foo = 5 然后我得到 Assignment to readonly property

我知道我可以通过将 foo 属性设置为读写来解决这个问题,但我想避免这种情况。

问题
如何解决?
是否可以从类外部将属性设置为只读,但从类和类别内部设置为可读写?
这将解决这个问题。

最佳答案

您也可以在头文件中声明属性的支持实例变量,以便编译器可以在类别中看到它:

@interface MyClass : NSObject
{
int _foo;
}
@property (readonly) int foo;
@end

明确声明此变量将用于支持属性(仅出于安全考虑):

@implementation MyClass
@synthesize foo = _foo;
...
@end

然后在类别中引用 _foo 应该可以正常工作:

@implementation MyClassCategory

- (void)someMethod
{
_foo++;
}

关于ios - 如何在 objective-c 中更改类别中的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com