簡體   English   中英

使用較差的命名標准遷移到Arc

[英]Migrating to Arc with poor naming standards

我正在處理一個常規忽略命名標准的代碼庫。 因此,即使方法名稱不符合NARC,某些類中的方法也會返回引用計數為1的對象。 很棒的東西。

我想將項目轉換為使用自動引用計數,但由於NARC命名標准被完全忽略,我有點緊張。 有誰知道ARC是否依賴NARC命名標准才能正常工作?

謝謝,

肖恩

ARC確實依賴命名約定來正常工作。 然而...

如果您只使用ObjC對象,那么只要您只有 ARC代碼,它通常就會“解決”。 例如,如果你有一個像這樣的方法:

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

這是錯誤的(在非ARC代碼中),但ARC將通過有效添加額外的autorelease來平衡它。 事實上,以上是正確的 ARC代碼,所以沒關系。

我的建議,如果這幾乎是所有ObjC代碼,是自動轉換為ARC然后運行靜態分析器。 這個問題實際上可能比你擔心的要小得多,如果它的代碼恰好恰好有錯誤的命名。

如果這是Core Foundation免費的免費橋接代碼,那么事情就會復雜一些。 然后我建議先運行靜態分析器,然后在轉換前正確命名。 幸運的是,命名約定是靜態分析器非常擅長的。

我不得不將幾個項目轉換為ARC,並且由於命名約定,到目前為止從未遇到過任何問題。

實際上轉換是非常直接的 - 所以雖然我完全理解你必須處理的代碼的心態 - 我真的不會太擔心。

到目前為止,我在轉換期間從未遇到過任何嚴重困難的情況,只要要轉換的代碼首先是正確的並且以某種方式清楚地理解。

實際上使用ARC我發現它與內置GC的任何其他語言一樣無故障 - 當然關於內存問題!

在最壞的情況下,您可能總是運行靜態分析儀 - 但是現在使用ARC很少需要。

這里討論的最關鍵的情況可能是: Objective-C中的自動引用計數不會阻止或最小化哪種泄漏?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM