gpt4 book ai didi

objective-c - 类扩展中@property(非原子,只读)和@property 之间的区别?

转载 作者:可可西里 更新时间:2023-11-01 05:02:34 25 4
gpt4 key购买 nike

我有一个 Objective-c 类“MyClass”。在 MyClass.m 中,我有一个声明 CGFloat 属性的类扩展:

@interface MyClass ()
@property (nonatomic) CGFloat myFloat;
@end

@implementation MyClass
@synthesize myFloat;
//...
@end

当使用 readonly 关键字声明属性时会发生什么变化(如果有的话)?

@interface MyClass ()
@property (nonatomic, readonly) CGFloat myFloat;
@end

@implementation MyClass
@synthesize myFloat;
//...
@end

也许在第一种情况下,我可以在 MyClass 中说 self.myFloat = 123.0;CGFloat f = self.myFloat;?然后在第二种情况下,readonly 关键字阻止赋值 self.myFloat = 123.0; 但允许读取 CGFloat f = self.myFloat;

最佳答案

readonly 选项意味着只有 getter 方法被声明为这个属性。因此,如果没有 setter,就无法通过 myObject.myFloat=0.5f;

进行修改

如果不声明为readonly,则默认为read write

通过 () 扩展声明您的属性不会修改访问模式,但会修改范围;它将成为“私有(private)”属性(property)。

关于objective-c - 类扩展中@property(非原子,只读)和@property 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217264/

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