使用Xcode 5禁用ARC

时间:2013-10-28 15:02:43

标签: objective-c automatic-ref-counting xcode5 compiler-warnings

在5之前的Xcode版本中,我们可以在创建项目时在项目设置中禁用ARC。现在ARC给我带来了这个问题。

使用属性列表文件,对于读取步骤,编译器给出了一个错误:“ARC不允许将'int'隐式转换为'id'”。我在Xcode 4中使用相同的代码没有这个问题。在我的属性列表文件中,键是数字,也在我的viewController.m中。当我禁止ARC作为目标时,警告仍然存在。

我看不出如何添加编译器标志。代码(带法语字符串):

NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];


NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Save.plist"];

NSArray *keys = [NSArray arrayWithObjects:@"valeurCompteur1", @"valeurCompteur2", @"valeurCompteur3", @"valeurCompteur4", @"valeurCompteur5", @"nomCompteur1", @"nomCompteur2", @"nomCompteur3", @"nomCompteur4", @"nomCompteur5", nil];

NSArray *objs = [NSArray arrayWithObjects: compteur1, compteur2, compteur3, compteur4, compteur5, nameC1, nameC2, nameC3, nameC4, nameC5, nil];

2 个答案:

答案 0 :(得分:7)

如果您想要手动引用计数(使用保留和释放),您可以在构建设置中禁用ARC。

在项目导航器中选择项目。编辑器区域应该显示一个包含四个选项卡的视图:信息,构建设置,构建阶段,构建规则。选择构建设置。

在这四个标题的左侧,应该有一个下拉列表,用于选择所需的目标。选择您不想要ARC的目标。

向下滚动以找到标题为“Apple LLVM 5.0 - 语言 - 目标-C”的部分。根据有三种设置。底部应该是“Objective-C自动参考计数”。将其设置为“否”,您将进行手动引用计数。

然而,修复报告的问题可能是更好的选择。使用ARC比使用ARC更好。

修复错误

您说您在创建obis数组的行上发生了错误。这意味着以下一个或多个变量是int而不是对象:

compteur1, compteur2, compteur3, compteur4, compteur5, nameC1, nameC2, nameC3, nameC4, nameC5

如果要将整数放入数组中,则必须将其设为NSNumber,例如

NSArray* anArray = [NSArray arrayWithObjects: [NSNumber numberWithInt: 2], nil];

现在有一种速记形式的写作,如下所示:

NSArray* anArray =  @[ @(2) ];

答案 1 :(得分:2)

以下是我推荐的步骤:

  1. 选择您的项目或plist
  2. 转到构建设置
  3. 选择级别
  4. 向下滚动到对象C自动参考计数,如屏幕截图所示
  5. 从下拉菜单中选择“否”