gpt4 book ai didi

ios - 分配只读属性

转载 作者:技术小花猫 更新时间:2023-10-29 10:59:59 27 4
gpt4 key购买 nike

我有以下代码:

-(id) initWithCoordinate:(CLLocationCoordinate2D)c title:(NSString *)t
{
self = [super init];

if (self)
{
coordinate = c;
self.title = t;
}

return self;
}

坐标是:

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

我有两个问题:

  • 可以分配给只读属性吗?
  • coordinate 前面不应该有 self 吗? (例如,self.coordinate = c)。

附言。使用此代码我没有遇到任何错误 - 它是书中的示例。

最佳答案

你应该写:self.coordinate = c 这等于 [self setCoordinate:c] - 调用 setter 方法。但是你不能这样做,因为你会得到 Assignment to readonly property 错误。只读属性没有 setter 方法。在您的情况下,您只需设置直接支持该属性的 ivar,这是有据可查的行为。 ivar 名称将是带有下划线前缀的属性名称,但在您的情况下,您有一个明确的 @synthesize 正如您所说,因此 ivar 将具有相同的名称和这就是为什么你没有任何编译器问题。属性可能是公开只读的,但可由类写入 - 这涉及在类扩展中声明 setter 方法或在扩展中重新声明属性。为此,您可以引用这篇文章:Objective-C property that is readonly publicly, but has a private setter

关于ios - 分配只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721724/

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