将非ARC项目转换为ARC

时间:2012-09-17 06:18:25

标签: objective-c ios5 automatic-ref-counting

我有一个Xcode 3.2目标项目。我想将此项目转换为ARC以改进

表现。我正在遵循这些步骤。

编辑 - >重构 - >转换为目标C ARC

我有一些.mm文件,我使用-fno-objc-arc禁用ARC。但即使在

之后

这我遇到了很多错误(ARC问题)。例如,主要在self = [super init]调用中,

错误无法在init系列中的方法之外分配给self。可以

有人告诉我,我是否遵循了正确的步骤?

2 个答案:

答案 0 :(得分:15)

我试图将一个项目转换为ARC,并在创建一个新项目并包含旧文件后 - 我得到的一个问题是

  

无法在init系列中的方法之外分配给“self”

选择器名称必须以init开头 - 不仅如此 - 在我的情况下,init选择器是:

-(id)initwithPage:(unsigned)pageNum {...}

注意小'w'。

我已将其更改为:

-(id)initWithPage:(unsigned)pageNum {...}

注意首都'W'!

我的问题已经解决了。

我希望这有助于某人。

答案 1 :(得分:1)

Ray Wenderlich的教程有一个非常好的ARC转换两部分教程,应详细说明正确的步骤:Part 1 Part 2

就您所遇到的错误而言,描述几乎总结了:您在不符合the standard for init methods的方法中分配给self。我不能说这是合法的预ARC,但它肯定不再存在。要解决这个问题,要么使其成为一个init方法(遵循将init方法调用为self的init实践,初始化任何值,并返回self),或者将其赋值给self。对于其他错误,请发布您遇到问题的任何问题(其中许多内容都包含在Ray的教程中),我们将尽我们所能。