gpt4 book ai didi

objective-c - 初始化只读属性

转载 作者:太空狗 更新时间:2023-10-30 03:11:05 44 4
gpt4 key购买 nike

我试图创建一个只读的属性。我想用创建此类实例的类中的值进行初始化,例如

@property (retain,readonly) NSString *firstName;

我试着像这样初始化它:


-(id)initWithName:(NSString *)n{
self.firstName = n;
}

一旦我这样做了,编译器就报告了一个错误,说无法分配只读属性。那我该怎么做呢?

最佳答案

直接分配给实例变量(如果需要,不要忘记添加 retaincopy)或在私有(private)类扩展中重新声明该属性。像这样:

在你的 .h 文件中:

@property (readonly, copy) NSString *firstName;

在您的 .m 文件中:

@interface MyClass ()

// Redeclare property as readwrite
@property (readwrite, copy) NSString *firstName;

@end


@implementation MyClass

@synthesize firstName;
...

现在您可以在您的实现中使用合成 setter,但类接口(interface)仍然将该属性显示为只读。请注意,导入您的 .h 文件的其他类仍然可以调用 -[MyClass setFirstName:],但它们不知道它的存在并将收到编译器警告。

关于objective-c - 初始化只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736762/

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