查询__has_feature(objc_arc)的动机是什么

What is the motivation for querying __has_feature(objc_arc)

我正在查看一些我需要维护的遗留代码,我看到很多地方有以下查询:

#if __has_feature(objc_arc)
    // ARC is On
    // ...

#else
    // ARC is Off
    // ...

#endif

保留 'ARC is Off' 代码的动机是什么?

没有什么动机将非 ARC 代码保留在 .m 文件中,因为您可以选择始终编译启用 ARC 的代码。

在 .h 文件中,如果头文件可能由仍然使用手动引用计数的 .m 文件导入并且该 .m 文件的维护者不希望导入,则需要保留无 ARC 代码将 .m 文件转换为 ARC。