簡體   English   中英

ARC中的Objective-C命名約定

[英]Objective-C naming convention in ARC

我最近從手動引用計數環境轉移到iOS項目中的ARC環境。

所以,假設我在手動引用計數環境的過去有以下代碼:

// Manual reference count environment (using "alloc" prefix as method returns a retained NSArray)
- (NSArray *)allocMyArray {
    NSArray *array = [[NSArray alloc] initWithObject:@"this is just a sample code"];

    return array;
}

我可以在完整的ARC環境中將上述方法名稱從allocMyArray更改為myArray嗎?

以下代碼是否具有有效的命名約定,並且在ARC環境中也沒有泄漏?

// ARC environment
- (NSArray *)myArray {
    NSArray *array = [[NSArray alloc] initWithObject:@"this is just a sample code"];

    return array;
}

通常,我是否應該在完整的ARC環境中使用“alloc”或“new”方法前綴,或者這種命名約定在ARC環境中是沒有意義的,並且對編譯器沒有影響?

謝謝,Yoash

如果您正在使用ARC,那么alloc init和使用類方法之間沒有太大的區別。 如果您不使用ARC,差異非常重要。

alloc / init組合為您提供了擁有引用。 這意味着你必須在以后發布它。 classnameWithFoo變量返回非擁有引用(自動釋放)。 你可能不會發布它。

這遵循通常的Cocoa命名約定。 除了以alloc,copy,mutableCopy和new開頭的方法之外,所有方法都返回非擁有(自動釋放)實例。 這些返回您必須釋放的擁有引用。

您為ARC環境建議的命名約定是好的,代碼不會泄漏。

該對象將只在運行循環結束之前。

如果您返回一個alloc / inited對象,ARC將插入適當的釋放調用,並且該對象將存在於其范圍內。

暫無
暫無

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

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