使用较差的命名标准迁移到Arc

时间:2012-09-24 19:04:25

标签: iphone objective-c ios automatic-ref-counting

我正在处理一个常规忽略命名标准的代码库。因此,即使方法名称不符合NARC,某些类中的方法也会返回引用计数为1的对象。很棒的东西。

我想将项目转换为使用自动引用计数,但由于NARC命名标准被完全忽略,我有点紧张。有谁知道ARC是否依赖NARC命名标准才能正常工作?

谢谢,

肖恩

2 个答案:

答案 0 :(得分:8)

ARC确实依赖命名约定来正常工作。然而...

如果您只使用了ObjC对象,那么只要您拥有ARC代码,它通常就会“解决”。例如,如果你有一个方法:

- (id)something {
  return [[Something alloc] init];
}

这是错误的(在非ARC代码中),但ARC会通过有效添加额外的autorelease来平衡它。事实上,上面是正确的 ARC代码,所以没关系。

我的建议,如果这几乎都是ObjC代码,那么就是自动转换为ARC,然后运行静态分析器。这个问题实际上可能比你担心的要小得多,如果它的代码很简单就会发生错误的命名。

如果这是Core Foundation免费的桥接代码,那么事情就会复杂一些。然后我建议先运行静态分析器,然后在转换前正确命名。幸运的是,命名约定是静态分析器非常擅长的。

答案 1 :(得分:3)

我不得不将几个项目转换为ARC,并且由于命名约定,直到目前为止从未遇到过任何问题。

实际上转换非常简单 - 所以虽然我完全理解你必须处理的代码的心态 - 我真的不会太担心。

到目前为止,我在转换过程中从未遇到任何严重困难的情况,只要要转换的代码首先是正确的并且以某种方式清楚地理解。

实际上使用ARC我发现它与内置GC的任何其他语言一样无故障 - 当然是关于内存问题!

在最坏的情况下,您可能总是运行静态分析仪 - 但是现在ARC很少需要这样做。

这里可能会讨论最关键的情况:What kind of leaks does automatic reference counting in Objective-C not prevent or minimize?