标记实例变量@private

时间:2009-12-19 16:55:47

标签: objective-c private instance-variables

我注意到很多Apple的接口在它们的实例变量声明之前使用@private。是否有一个很好的设计理由,这是我应该做的事情吗?

3 个答案:

答案 0 :(得分:4)

私有实例变量用于将接口与实现分开。在Objective-C中,由于类声明必须显示所有实例变量,因此需要有一种方法来阻止子类访问属于内部实现的子类。否则,其他程序员可以编写依赖于那些内部变量的代码,这将使类设计者无法在不破坏现有代码的情况下对类内部进行更改。

从另一个角度来看,标记为私有的实例变量是与子类程序员签订合同的一部分,而标记为私有的实例变量则不是。

这意味着实例变量通常应标记为私有,以便只能通过其访问器方法访问它们(如果有的话)。否则,有人可以轻松编写您的类的子类,只需创建一个访问器来使任何实例变量公开。

答案 1 :(得分:1)

如果您不希望子类能够访问变量,请将它们标记为@private。

答案 2 :(得分:0)

另一种方法是在@implementation部分声明实例变量。这些变量是隐含的私有。来源:Kochan: Objective-C编程,第四版。页。 199.因此,类声明必须显示所有实例变量,如e.James所述。

在@interface中声明实例变量的唯一原因是允许它们由派生类(子类)继承。