gpt4 book ai didi

IOS 类别 - 可以在类别之间创建依赖关系吗?

转载 作者:行者123 更新时间:2023-11-28 22:27:28 30 4
gpt4 key购买 nike

可以在 Objective C 中创建类别之间的依赖关系吗?也在类别和它们的基类之间?

我知道在运行时应该没有区别,它们可能只是在编译时合并在一起。例如,假设我将 B 类分解为:

B(base class)
B+categ1
B+categ2
B+categ3

我的问题是,这是否是错误的:

a) import B+categ2 and B+categ3 in B.m 
b) import B+categ1 in B+categ3?

我在性能方面和概念方面都提出了要求。

编辑:

对于单屏应用,您有什么建议?类别或扩展该类?

最佳答案

这并没有什么严重的错误,但它可能表明过度使用了类别。虽然它们是解决某些问题的强大工具,并且肯定可以带来一些便利,但我通常不会在它们之上构建复杂的系统。

我通常发现过度使用类别是基于太多IS-A thinking rather than HAS-A thinking .换句话说,如果你在一个类上放置了很多类别来充当一种奇特的子类化,你最好还是使用组合。与其向 NSArray 添加大量类别方法(作为示例),您需要一个具有 NSArray 属性并提供所需接口(interface)的数据对象。

但如果您过度使用类别,这只是建议。让类别导入其他类别没有根本问题。然而,这种说法是不正确的:

I know that there should be no difference at runtime, they probably are just merged together at compile-time.

类别在运行时解析,而不是编译时。这样做的一个主要危险是,如果两个类别实现相同的方法,则行为是未定义的。这就是为什么你永远不应该使用类别来覆盖方法,而只是添加它们。

关于IOS 类别 - 可以在类别之间创建依赖关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511039/

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