Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Objective c 将非圆弧项目转换为圆弧_Objective C_Ios5_Automatic Ref Counting - Fatal编程技术网

Objective c 将非圆弧项目转换为圆弧

Objective c 将非圆弧项目转换为圆弧,objective-c,ios5,automatic-ref-counting,Objective C,Ios5,Automatic Ref Counting,我有一个针对Xcode 3.2的项目。我想将此项目转换为ARC以改进 性能。我遵循以下步骤 编辑->重构->转换为目标C弧 我有一些.mm文件,我正在使用-fno-objc-ARC禁用这些文件。但即使在 这让我犯了很多错误(ARC问题)。对于主要在self=[super init]调用中的eg 错误是无法在init族中的方法之外分配给self。能 有人告诉我我是否遵循了正确的步骤吗?Ray Wenderlich的教程有一个相当不错的圆弧转换两部分教程,其中应该详细介绍要采取的正确步骤: 就你所犯

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

性能。我遵循以下步骤

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

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

这让我犯了很多错误(ARC问题)。对于主要在self=[super init]调用中的eg

错误是无法在init族中的方法之外分配给self。能


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

Ray Wenderlich的教程有一个相当不错的圆弧转换两部分教程,其中应该详细介绍要采取的正确步骤:


就你所犯的错误而言,描述几乎是对它的总结:你正在用一种不符合要求的方法分配给
self
。我不能说这是否是合法的,但现在肯定不是了。要解决这个问题,可以将其设置为init方法(遵循init实践,将超级init方法调用到self中,初始化任何值,然后返回self),或者在其中将赋值给self。对于其他错误,请发布您遇到的任何问题(其中许多问题在Ray的教程中介绍),我们将尽我们所能

我试图将一个projet转换为ARC,在创建了一个新的projet并包含了来自旧projet的文件之后,我遇到的一个问题是

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

选择器名称必须以
init
开头-不仅如此-在我的示例中,init选择器是:

-(id)initwithPage:(unsigned)pageNum {...}
注意小的“w”

我已将其更改为:

-(id)initWithPage:(unsigned)pageNum {...}
注意大写字母“W”

我的问题解决了


我希望这对某人有所帮助。

这是完全合法的,但问题是:在什么情况下,您希望在
init
方法之外分配
self
?他的方法完全可能具有init风格的行为,但只是不返回init-ed对象(即调用
obj=[obj-alloc];
[obj initWithData];
with initWithData返回void)。由于init方法必须返回指针,因此它在弧前运行良好,但在转换时会导致大量问题。幸运的是,如果仅此而已,则应该只更新声明。甚至我在XCode中也观察到了它。另外一点注意:这一点已提到(尽管非常微妙)在LLVM的文档中:“如果忽略任何前导下划线,选择器的第一个组件要么完全由方法族的名称组成,要么以该名称开头,后跟除小写字母以外的字符,那么选择器就在某个选择器族中。”不要忘记-(id)返回值!