【发布时间】:2012-11-06 19:45:12
【问题描述】:
当您独自工作或与可以访问应用程序的所有属性、ivars 的团队一起工作时,在 Xcode 中使用 @private 指令有什么意义?
有内存使用、性能等方面的优势吗?或者这只是为大型团队准备的东西,其中一部分不应该使用将来会改变的东西?
谢谢
【问题讨论】:
标签: objective-c cocoa-touch class-design encapsulation private-members
当您独自工作或与可以访问应用程序的所有属性、ivars 的团队一起工作时,在 Xcode 中使用 @private 指令有什么意义?
有内存使用、性能等方面的优势吗?或者这只是为大型团队准备的东西,其中一部分不应该使用将来会改变的东西?
谢谢
【问题讨论】:
标签: objective-c cocoa-touch class-design encapsulation private-members
在类声明的@interface 中使用@private 可确保没有其他类可以访问这些ivars。这对于封装很重要。这对于单个开发人员和由数十名开发人员组成的团队同样重要。
封装可确保您仅将提供的 API 用于某个类,而无需了解其内部工作方式。一段时间后,您可能希望更改实施。这应该对任何已经使用该类的类没有影响。 API 不会改变,只会改变它的实现。
请记住,ivars 只能在给定类的实现中访问。没有其他类应该有权访问这些 ivars。否则您的代码会变得非常脆弱且难以维护。
编辑:使用现代 Objective-C,您甚至不应该在 .h 文件中有任何 ivars。将它们移到@implementation 行,保证它们是私有的,使用 .h 文件的人甚至都不知道你有什么 ivars。
【讨论】:
@property 声明一个属性,你就完成了。在此之前,需要使用@property、@synthesize,并声明一个 ivar。因此,无论何时你看到它,它都是使用较旧的编译器编写的代码,或者是由尚未开始使用最新编译器的新功能的人编写的代码。
@property 之前,这曾经是必需的。