我在我的 ARC 项目中使用了一些非 ARC 代码,即 Three20。我已经添加了所有适当的编译器标志并且一切正常。但是,我需要对 Three20 类中的某些类进行子类化,我不确定是否应该将编译器标志添加到我的非 ARC 新文件中,或者编译器是否会弄清楚并添加适当的发布调用。
简单回顾一下: - XCode 4 中的 ARC 项目 - 包括非 ARC 代码 (Three20) - 需要对非 ARC 文件中定义的内容进行子类化 - 我需要添加发布调用吗? - 我是否需要在子类中为非 ARC 添加编译器标志?
最佳答案
迈克尔,
ARC 是一种编译时技术,它根据内存中的给定槽是否会在当前方法/函数调用之后持续存在来确定保留/释放语义。因此,您可以安全地混合使用或不使用 ARC 的子类。我一直这样做。我也分类别进行。与垃圾回收不同,ARC 非常关注每个方法/函数中的存储空间。顺便说一句,大多数 iOS 框架似乎还没有使用 ARC。因此,您创建的框架类的任何子类都有这个“问题”,而这根本不是问题。
回答您的具体问题:
Just to recap: - ARC project in XCode 4 - Includes non-ARC code (Three20) - Need to subclass something defined in non-ARC files - Do I need to add release calls? - Do I need to add compiler flag for non-ARC in subclass?
非 ARC 父类(super class)的子类可以是 ARC 也可以不是。由于您的应用程序的默认设置是 ARC,因此您无需对您的子类执行任何操作。
安德鲁
关于objective-c - 在 Xcode 4 中将非 ARC 文件子类化为 ARC 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790620/