gpt4 book ai didi

c# - 什么是 C# 中的公共(public)获取/保护集属性的 Objective-C 等价物

转载 作者:IT王子 更新时间:2023-10-29 04:43:28 24 4
gpt4 key购买 nike

有什么方法可以在 Objective-C 中创建像这个 C# 属性这样的属性吗?

public int prop { get; protected set;}

本质上,我想让从类外部获取值成为可能,但只能从类内部设置值。

最佳答案

完成此操作的最简单方法是在 MyClass 的公共(public)接口(interface)(即 .h 文件)中将该属性声明为 readonly:

@property (readonly) NSInteger prop;

然后,在该类的 .m 文件中,声明一个类 extension (名称为空的类别)。在类扩展中,您可以 redeclare将其可写性更改为可读写的 @property:

@interface MyClass ()
@property (readwrite) NSInteger prop;
@end

@implementation MyClass
@synthesize prop;
...
@end

当然,Objective-C 不强制执行访问限制,因此无法阻止一些流氓代码调用 -[MyClass setProp:]。然而,编译器会将此标记为警告,这是您在 Objective-C 中所能获得的最好的。不幸的是,没有标准的方法来将这个“ protected ”可写属性记录到子类中;您必须为您的团队制定一个约定,或者如果它在您要发布的框架中,则将其放入该类的公共(public)文档中。

关于c# - 什么是 C# 中的公共(public)获取/保护集属性的 Objective-C 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338434/

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