封装在目标c中

hmt*_*hur 0 encapsulation objective-c

我对封装有点困惑.一般(或在Obj-C中),它是指分离接口/实现还是暗示通过方法访问ivars?

请澄清.谢谢.

bbu*_*bum 6

实际上,两者.

正如nacho4d所说,你将实例变量封装在你的类中,并通过使用方法和属性来读取和写入它们来阻止对它们的直接访问.这确保了实例始终可以知道某些内容何时读取或写入了值,而直接ivar访问与在C结构中设置值没有什么不同.

然而,分离@interface@implementation也大大有助于封装.在过去几年中,语言增强的目标之一是增加分离所提供的封装程度.

也就是说,类的主要部分@interface现在只能包含您希望其他开发人员/代码与之交互的类的部分.公共界面,如果你愿意的话. 所有实现细节都可以移出@interface最新的编译器,包括所有实例变量.