首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据封装...?

数据封装...?
EN

Stack Overflow用户
提问于 2010-10-23 23:44:01
回答 2查看 3.3K关注 0票数 7

谁能给我解释一下Objective-C中的数据封装是什么?有人告诉我这是Objective-C的一个重要概念,但我不明白为什么……

向我解释,就好像我是5岁,然后又是25岁……

谢谢你的时间,大牛

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-23 23:51:07

来自http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-2/

我们所说的数据封装是指数据由方法包含(可以这么说),这意味着要访问它,我们需要使用方法。你们中的一些人用其他语言编程,没有听说过数据封装,可能会想知道我们为什么要这样做。答案是,通过封装数据,在类的开发人员和类的用户之间有一个很好的缓冲。因为类方法管理和维护类中的属性,所以它们可以更容易地维护数据完整性。另一个主要的好处是,当开发人员分发他的类时,使用它的人根本不必担心类的内部结构。ʼ。开发人员可以更新方法以使其更快或更高效,但这种更新对类的用户是透明的,因为他/她仍然使用相同的方法,而不会更改他/她的代码。

简单地说,用户被提供了开发人员希望他们拥有的东西,并“保护”了其他一切。开发人员可以在内部更改任何内容,而无需用户重写代码。

如果开发人员不遵循数据封装,那么每次发布新版本的库、代码片段或整个程序时,我们都需要重写代码。

票数 4
EN

Stack Overflow用户

发布于 2010-10-24 01:23:54

Objective-C中的数据封装意味着只有类本身应该接触它的实例变量。因此,您应该始终将它们标记为私有,并仅通过属性公开它们,如下所示:

代码语言:javascript
运行
复制
@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)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4004768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档