迁移到命名标准不佳的 Arc

Posted

技术标签:

【中文标题】迁移到命名标准不佳的 Arc【英文标题】:Migrating to Arc with poor naming standards 【发布时间】:2012-09-16 06:39:18 【问题描述】:

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

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

谢谢,

肖恩

【问题讨论】:

【参考方案1】:

ARC 确实依赖命名约定才能正常工作。不过……

如果您只使用 ObjC 对象,那么只要您拥有 ARC 代码,它通常会“成功”。例如,如果您有这样的方法:

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

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

如果这几乎是所有 ObjC 代码,我的建议是自动转换为 ARC,然后运行静态分析器。如果它是相当简单的代码,只是碰巧有错误的命名,问题实际上可能比你担心的要小得多。

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

【讨论】:

谢谢罗伯。我会将整个代码库转换为 arc(除了一些外部库,如 Reachability、JSONKit)【参考方案2】:

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

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

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

事实上,我发现使用 ARC 与任何其他具有内置 GC 的语言一样没有问题 - 当然涉及内存问题!

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

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

【讨论】:

以上是关于迁移到命名标准不佳的 Arc的主要内容,如果未能解决你的问题,请参考以下文章

如何解析格式不佳的 HTML 文件?

性能不佳的 SQL 查询

小米1S无线网连接时老是出现暂时关闭状态不佳的链接

在 AVPlayer 中播放网络不佳的流

如何使用 XPath 挖掘(其他人的)编码不佳的 HTML?

流和 firebase 状态不佳的问题:DocumentSnapshotPlatform 中不存在字段