1

让我们假设我有一个看起来像这样的方法。

-(void)doSmth {
    NSString *one = [[NSString alloc] initWithFormat:@"%@",someNumber];

    NSString *two = [[NSString alloc] initWithFormat:@"%@",someOtherNumer];

    [one release];
}

项目是在没有 ARC 的情况下创建的。我想将其转换为 ARC。

我的问题是:转arc后会有泄漏吗?

谢谢

4

3 回答 3

1

不会。ARC 转换器将删除对 的显式调用release,并且编译器将在编译时自动插入对两者的释放one调用two

最终结果:这里没有泄漏。

于 2012-04-30T21:35:46.070 回答
0

您必须[one release];像在 ARC 中那样删除,这会产生错误。

关于您的问题,在切换到 ARC(并删除发布声明)后,它不会泄漏。

编辑:编写这样的代码可能会更好:

NSString *one = [[NSString alloc] initWithFormat@"one"];

或像这样:

NSString *one = @"one";
于 2012-04-30T21:08:39.287 回答
0

在此处输入图像描述

如果我们需要将完整的项目转换为 ARC,那么 Edit ->convert -> to Objective-C ARC

或者如果你需要转换一个特定的文件,那么 projectNav ->build Phases ->compile source in that specific .m file add -fno-objc-arc

在此处输入图像描述

于 2016-04-07T09:00:35.420 回答