gpt4 book ai didi

objective-c - Objective-C中的继承和类别有什么区别

转载 作者:IT老高 更新时间:2023-10-28 11:30:32 25 4
gpt4 key购买 nike

有人可以向我解释一下 Objective C 中类别和继承之间的区别吗?我已阅读 the entry in Wikipedia并且关于类别的讨论看起来与继承没有任何不同。我也看了《Open iPhone Development》一书中关于这个话题的讨论,还是没看懂。

最佳答案

有时,继承似乎比它的值(value)更麻烦。当您想向现有类添加一些改变该类行为的内容时,它可以正确使用。

使用类别,您只希望现有对象多做一点。如前所述,如果您只想拥有一个处理压缩的字符串类,则不需要子类化字符串类,只需创建一个处理压缩的类别。这样,您无需更改已使用的字符串类的类型。

线索在于类别只能添加方法的限制,您不能使用类别将变量添加到类中。如果该类需要更多属性,则必须对其进行子类化。(编辑:我相信您可以使用关联存储)。

类别是添加功能的好方法,同时符合面向对象的原则,优先考虑组合而不是继承。

2012 年 1 月编辑

现在情况发生了变化。使用当前的 LLVM 编译器和现代的 64 位运行时,您可以将 iVar 和属性添加到类扩展(不是类别)。这使您可以将私有(private) iVar 排除在公共(public)界面之外。但是,如果您为 iVar 声明属性,它们仍然可以通过 KVC 访问/更改,因为在 Objective-C 中仍然没有私有(private)方法之类的东西。

关于objective-c - Objective-C中的继承和类别有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/522341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com