所以我做的是平時在那裏我傳遞一個指針NSError對象的方法。它曾經是一個簡單的:的iOS __autoreleasing常量錯誤
-(BOOL)foo:(NSString *)string error:(NSError **)error
但ARC現在是:
-(BOOL)foo:(NSString *)string error:(NSError *__autoreleasing *)error
所以,如果我有一個變量:
NSError *error = nil;
和嘗試:
[foo:@"a string" error:&error];
,我發現了錯誤:
Sending 'NSError const __strong*' to parameter of type 'NSError *__autoreleasing*' changes retain/release properties of pointer.
這很好,即使我的印象是編譯器會爲你處理這個問題。所以我做錯誤:
__autoreleasing NSError *error = nil;
,我得到警告:
Sending 'NSError *__autoreleasing const *' to parameter of type 'NSError *__autoreleasing*' discards qualifier
所以我的真正的問題是,爲什麼是我NSError一個const?而我的下一個問題是如何解決這個問題?這是一個非常基本的情況,現在與ARC,我只是不知道如何照顧這一點。
這是奇怪的。它不會讓我這樣做。即使我改變參數名稱別的東西,如果它看到一個NSError指針進來的,它不會允許它,並給我原來的錯誤。 – mickm 2012-07-26 22:34:27
你改變了界面和實現,對吧?我會去一個示例項目現在測試它... – 2012-07-26 23:24:51
我剛剛建立了一個類似的項目,並能正常工作。不知何故,我必須失去一些東西,但我看不到它是什麼。我會看更多...哦,我甚至沒有使用__autoreleasing,它仍然編譯沒有錯誤。 – mickm 2012-07-27 18:37:52