2014-03-24 48 views
9

我有方法,採用間接指針作爲參數,然後,如果錯誤,將其設置爲錯誤對象。我試圖儘可能多地發出警告。但其中之一 - Implicit ownership types on out parameters - 以此方法生成警告:如何解決警告'沒有明確的所有權'

- (id)doWithError:(NSError **)error { 
    ... 
} 

如何修復代碼以刪除警告?

回答

9

可以通過聲明你的方法

- (id)doWithError:(NSError * __autoreleasing *)error { 
    // ... 
} 

__autoreleasing所有權限定符隱含地假設爲「輸出參數」修復警告 (見Clang/ARC documentation「4.4.2間接參數」), 因此明確添加它不會更改代碼。

+0

工作!謝謝!但不知何故,它不適用於另一種方法' - (id)doWithItemTags:(NSMutableDictionary * __autoreleasing *)itemTags' – Ossir

+0

@Ossir:我不能再現這個問題。 ' - (id)doWithItemTags:(NSMutableDictionary * __autoreleasing *)itemTags'不會導致編譯器警告我,甚至沒有'-Weverything'。 –

+0

我已經清理過它並建立了幾次,警告仍然存在:https://www.dropbox.com/s/bg62g4vfjk340z1/Screenshot%202014-03-24%2015.00.49.png我將嘗試刪除派生的數據 – Ossir

相關問題