gpt4 book ai didi

cocoa - 关于读写属性的问题

转载 作者:行者123 更新时间:2023-12-03 16:59:23 24 4
gpt4 key购买 nike

我喜欢读写属性的一点是,您可以“免费”获得 KVO 合规性,因此我倾向于在属性上使用它,即使它们仅从属性所属的对象内写入。另一方面,我知道只有当某个属性可供其他对象写入时,才应将其设置为可读写。那么,即使我只从自己调用 setter,我是否应该使用 readwrite:

[self setFoo:bar];

替代方案(我认为)是使用:

[self willChangeValueForKey:@"foo"];
foo = bar;
[self didChangeValueForKey:@"foo"];

这是我每次想要更改 foo 时都必须编写的额外两行代码。哪个更好?

最佳答案

您可以在公共(public)接口(interface)中声明一个属性readonly,然后在实现文件的类扩展中将其提升为readwrite

Foo.h:

@interface Foo: NSObject
@property (readonly) NSString *frob;
@end

Foo.m:

@interface Foo ()
@property (readwrite) NSString *frob;
@end

@implementation Foo
@synthesize frob;

// Methods in Foo.m can now use foo.frob = @"whatever";
@end

关于cocoa - 关于读写属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572907/

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