2015-10-19 36 views
0
NSString *p = [[storagePath retain] autorelease]; 

1)ARC禁止顯式發送'autorelease'消息。字符串中的多個錯誤

2)ARC禁止顯式發送'retain'消息。

3)autorelease不可用,不適用於自動引用計數模式。

4)保留不可用,不適用於自動引用計數模式。

該字符串有多個錯誤。提出問題和整改。

+0

如果這是來自教程,它已過時。 ObjC現在使用ARC來管理內存,渲染'retain','autorelease'和'release'已過時。有關更多詳細信息,請參閱發佈的答案或[文檔(在Swift 2中)](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html)。 – Arc676

回答

1

ARC指爲(自動引用計數),其負責對 存儲器釋放安全。

波紋管線是指:

//NSString *p = [[storagePath retain] autorelease]; 

「[storagePath挽留]」通過添加1

所以意味着可變storagePath增量它的參考,這是需要釋放時,它便不再使用。 autorelease將自動執行此任務。

但當蘋果介紹ARC常做自動釋放一切(除了:複雜的迴路)

你並不需要使用自動釋放現在保留的NSString財產類不再存在。所以,不需要做保留字符串。只需簡單地編寫以下

NSString *p = storagePath; 
+0

因爲ARC爲您安全地釋放內存而努力 – Jamil

1

(ARC是「自動引用計數」,一個新的功能來underwith的iOS 5及以上)。因此您不需要手動保留或釋放。

// directly you want to access 

NSString *p = storagePath; 

你可以刪除你的保留通話一起或者通過執行以下操作關閉ARC:

單擊在左側的導航視圖的項目的名稱,進入目標 - >構建階段並將-fno-objc-arc添加到任何相關文件的「編譯器標誌」。