是否可以在 Objective-C 中创建私有属性?

Posted

技术标签:

【中文标题】是否可以在 Objective-C 中创建私有属性?【英文标题】:Is it possible to create private property in Objective-C? 【发布时间】:2011-04-09 14:31:08 【问题描述】:

我确实知道可以以另一种方式实现一种私有财产功能,但我对特定问题感兴趣。 谢谢。

【问题讨论】:

我也想做同样的事情。我想隐藏类中包含的特定变量的所有保留/释放代码,但该变量并不意味着公开。 JFYI,现在有了 ios SDK 5 ARC,您不再需要关心保留和释放 :) 这就是我听到的,我很高兴看到。抱歉,跑题了。 【参考方案1】:

是的,你可以,但是代码看起来有点奇怪。如果你打电话它只会给你一些警告,你必须自己检查警告

在你的实现文件.m中

@interface YourObject ()

@property (nonatomic, retain) NSMutableArray *infoArray;

@end

【讨论】:

即使这个解决方案也不会创建真正的私有财产,因为它可以被外部代码访问。即使通过 setValue:forKey: 调用也没有警告 你这是什么意思?如果我调用 YourObject *obj = //alloc init;然后 obj.infoArray,它会给我警告。你在做 KVO? @vodkhang:为什么你说代码看起来很奇怪?对我来说这看起来很正常。 @Gobra: -setValue:forKey: 不会为任何私有、公共甚至不存在的属性生成编译时警告。 @NR4TR:属性只是一对方法。 @vodkhang:是的,这是一个标准的东西,称为类扩展。 developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…

以上是关于是否可以在 Objective-C 中创建私有属性?的主要内容,如果未能解决你的问题,请参考以下文章

使用 XCTest 在 Objective-C 静态库中创建测试用例

Objective-C:(私有/公共属性)为外部类调用设置只读属性,为自调用设置只读属性

如何在 Objective-C 中创建一个空白的透明 png?

是否可以在 Objective-C 中将方法声明为私有?

是否可以在 Swift 中创建具有 Self 或关联类型要求的通用计算属性,如果可以,如何?

是否可以在 SOAP Web 服务中创建只读元素?