gpt4 book ai didi

objective-c - ARC、非 ARC 和继承

转载 作者:可可西里 更新时间:2023-11-01 04:36:21 28 4
gpt4 key购买 nike

我还没有使用过 ARC,只是在它通过第 3 方代码强制进入项目时处理它。我已经阅读了所有 ARC 文档,但还没有看到这个问题的答案:

如果我在使用 -fobjc-arc 编译的模块中定义了一个类,我能否在不支持 ARC 的模块中从中派生一个新类?

在我看来,只要派生类不尝试触及根类中的任何 ivar,它就应该可以正常工作。在我看来,即使有一个调用 [super dealloc] 的 dealloc 方法在派生类中也没有问题。

反过来呢?我可以从非 ARC 类派生出支持 ARC 的类吗?应该也能正常工作吧?

加分项:在混合 ARC 和非 ARC 代码时是否有我应该让自己意识到的问题?

最佳答案

我没有发现任何问题。您必须意识到 ARC 类似于源代码预处理器,在编译期间为您添加内存管理调用。当您到达链接阶段时,您无法真正区分 ARC 代码和非 ARC 代码。 (这可能是一种过度简化,但应该适合您的目的。)如果您的派生类具有正确的内存管理并且父类(super class)具有正确的内存管理,那么结果将正常工作。

我能想到的唯一区别是处理 weak 属性。但我对这些了解不多,无法说明是否有可能使用具有弱属性的 ARC 和 MRC 代码的某种组合来获得有缺陷的代码。

关于objective-c - ARC、非 ARC 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018137/

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