谁能给我解释一下Objective-C中的数据封装是什么?有人告诉我这是Objective-C的一个重要概念,但我不明白为什么……
向我解释,就好像我是5岁,然后又是25岁……
谢谢你的时间,大牛
发布于 2010-10-23 23:51:07
来自http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-2/:
我们所说的数据封装是指数据由方法包含(可以这么说),这意味着要访问它,我们需要使用方法。你们中的一些人用其他语言编程,没有听说过数据封装,可能会想知道我们为什么要这样做。答案是,通过封装数据,在类的开发人员和类的用户之间有一个很好的缓冲。因为类方法管理和维护类中的属性,所以它们可以更容易地维护数据完整性。另一个主要的好处是,当开发人员分发他的类时,使用它的人根本不必担心类的内部结构。ʼ。开发人员可以更新方法以使其更快或更高效,但这种更新对类的用户是透明的,因为他/她仍然使用相同的方法,而不会更改他/她的代码。
简单地说,用户被提供了开发人员希望他们拥有的东西,并“保护”了其他一切。开发人员可以在内部更改任何内容,而无需用户重写代码。
如果开发人员不遵循数据封装,那么每次发布新版本的库、代码片段或整个程序时,我们都需要重写代码。
发布于 2010-10-24 01:23:54
Objective-C中的数据封装意味着只有类本身应该接触它的实例变量。因此,您应该始终将它们标记为私有,并仅通过属性公开它们,如下所示:
@interface Foo : NSObject {
@private
int numberOfBars;
Baz* contentBaz;
}
@property(nonatamic, assign) int numberOfBars;
@property(nonatomic, retain) Baz* contentBaz;
@end这意味着该类可以在其setter方法中实现验证。更好的是,如果你使用@synthesize来生成你的getter和getter,你甚至不需要担心Cocoa的内存模型(除了在dealloc中释放你的ivar)。
https://stackoverflow.com/questions/4004768
复制相似问题