Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将标记添加到启用圆弧的项目_Iphone_Objective C_Automatic Ref Counting - Fatal编程技术网

Iphone 将标记添加到启用圆弧的项目

Iphone 将标记添加到启用圆弧的项目,iphone,objective-c,automatic-ref-counting,Iphone,Objective C,Automatic Ref Counting,在启用ARC的项目中,是否有方法在代码中以编程方式添加-fno objc ARC标记 因此,我可以将我的源文件提供给其他人,而该人无需手动添加-fno objc arc。否-不在代码中。这将存储在项目文件中,因此如果您将整个项目发送给其他人,它应该可以工作。但是,您不能只向他们发送几个类并让它们工作(它需要是整个项目)。否-不在代码本身中。这将存储在项目文件中,因此如果您将整个项目发送给其他人,它应该可以工作。但是,您不能只向他们发送几个类,然后让它们工作(它需要是整个项目)。我认为这是因为您希

在启用ARC的项目中,是否有方法在代码中以编程方式添加
-fno objc ARC
标记


因此,我可以将我的源文件提供给其他人,而该人无需手动添加
-fno objc arc

否-不在代码中。这将存储在项目文件中,因此如果您将整个项目发送给其他人,它应该可以工作。但是,您不能只向他们发送几个类并让它们工作(它需要是整个项目)。

否-不在代码本身中。这将存储在项目文件中,因此如果您将整个项目发送给其他人,它应该可以工作。但是,您不能只向他们发送几个类,然后让它们工作(它需要是整个项目)。

我认为这是因为您希望将您的项目作为一个可重用库分发,以便在其他项目中使用,而不管它们是否使用ARC

我不认为您可以在源代码中添加标志来告诉ARC忽略该文件(至少我还没有找到方法),但是您可以使用

#if __has_feature(objc_arc)
...
#endif
你可以用这个来发出警告,说

#warning This file is not ARC compatible, add the -fno-objc-arc tag
但一个更优雅的解决方案是使用此功能在编译时自动分支代码,以便它可以在ARC和非ARC构建上工作

我编写了一个简单的可重用头文件,可以粘贴到源文件的顶部,也可以作为独立头文件包含在项目中:

这提供了一系列宏来代替保留、释放和自动释放方法,以便可以为ARC构建自动剥离它们。有关如何使用的示例,请查看iRate:


以这种方式转换类文件只需几分钟。

我假设这是因为您希望将项目作为可重用库分发,以便在其他项目中使用,而不管它们是否使用ARC

我不认为您可以在源代码中添加标志来告诉ARC忽略该文件(至少我还没有找到方法),但是您可以使用

#if __has_feature(objc_arc)
...
#endif
你可以用这个来发出警告,说

#warning This file is not ARC compatible, add the -fno-objc-arc tag
但一个更优雅的解决方案是使用此功能在编译时自动分支代码,以便它可以在ARC和非ARC构建上工作

我编写了一个简单的可重用头文件,可以粘贴到源文件的顶部,也可以作为独立头文件包含在项目中:

这提供了一系列宏来代替保留、释放和自动释放方法,以便可以为ARC构建自动剥离它们。有关如何使用的示例,请查看iRate:


以这种方式转换类文件只需几分钟。

您是否可以使用
\uuuu atribute\uuuu((目标(“告诉链接器一些事情”))
?我搞砸了一点,没有发现任何有用的东西,但可能我遗漏了一些东西。因此,我必须将ARCHelper.h的内容粘贴到所有非ARC.h文件中?如果你不需要弱链接模块,它只有大约10行,你也可以将它放在.m文件中,不太显眼。或者,你也可以只添加一条广告将它作为一个.h文件复制到项目中,而不是复制并粘贴到每个文件中。你也可以看看它是如何工作的,并复制你想要的位,可能只有5行左右-我只制作了一个库,这样我就可以重复使用它,而无需每次都考虑它。要明确的是,这不仅仅用于非ARC文件,用于将ARC或非ARC文件转换为在两种环境下都能工作的文件。它不会神奇地使您的文件在两种环境下都能工作,您仍然需要用库提供的宏替换retain/release和autorelease语句。您可以用
\uuu atribute\uuuuuuu((目标)做些什么吗(“告诉链接器一些事情”))
?我搞砸了一点,没有发现任何有用的东西,但可能我遗漏了一些东西。因此,我必须将ARCHelper.h的内容粘贴到所有非ARC.h文件中?如果你不需要弱链接模块,它只有大约10行,你也可以将它放在.m文件中,不太显眼。或者,你也可以只添加一条广告将它作为一个.h文件复制到项目中,而不是复制并粘贴到每个文件中。你也可以看看它是如何工作的,并复制你想要的位,可能只有5行左右-我只制作了一个库,这样我就可以重复使用它,而无需每次都考虑它。要明确的是,这不仅仅用于非ARC文件,用于将ARC或非ARC文件转换为在两种环境下都能工作的文件。它不会神奇地使您的文件在两种环境下都能工作,您仍然需要用库提供的宏替换保留/释放和自动释放语句。正如@nick lockwood所说,我们可以在compiletime检查ARC兼容性。我们还可以添加非arc代码,如#if#u has#u feature(objc#u arc)/@autoreleasepool{etc#else//release retain autoreleasepool等#endifas@nick lockwood说我们可以在编译时检查arc兼容性。我们还可以生成警告或错误。我们还可以添加非arc代码,如#if#u has#u has#u feature(objc#arc)//@autoreleasepool{etc#else//release-retain-autoreleasepool等#endif