在Xcode 4.5中编译旧项目时,出现以下警告:
“当不使用ARC时,'__bridge'转换没有效果”
有什么正确的方法可以消除此警告,并使代码在ARC和非ARC项目中都能正常工作?
在Xcode 4.5中编译旧项目时,出现以下警告:
“当不使用ARC时,'__bridge'转换没有效果”
有什么正确的方法可以消除此警告,并使代码在ARC和非ARC项目中都能正常工作?
通过几个#define
,我们可以编写源文件,使其能够正确编译MRC、ARC和GC。
Xcode不允许同时启用ARC和GC,但我们可以这样编写:
#if defined(__OBJC_GC__)
# define USING_GC 1
#else
# define USING_GC 0
#endif
#if __has_feature(objc_arc)
# define USING_ARC 1
#else
# define USING_ARC 0
#endif
#if USING_ARC || USING_GC
# define USING_MRC 0
#else
# define USING_MRC 1
#endif
这将定义USING_GC
、USING_MRC
和USING_ARC
中的一个为1
,另外两个为0
。您可以将其放在项目的前缀头文件(.pch)中。
您可以直接在代码中使用这些定义来包含/排除诸如桥接转换之类的内容;或者更好的是定义内存调用、强制转换等宏,这些宏会根据所使用的内存模型扩展到适当的代码。
希望对您有所帮助。
只需为该文件打开 ARC:
-fobjc-arc
(前往“Build Phases”>“Compile Sources”>“Compiler Flags”)