2012-02-08 74 views
5

自從我加入這個異步要求,我得到的Sending 'NSError *const __strong *' to parameter of type 'NSError *__autoreleasing *' changes retain/release properties of pointerIOS NSError類型

... 
[NSURLConnection sendAsynchronousRequest:req queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLData:data error:&error]; 
     ... 
    }); 
}]; 
... 

Xcode的錯誤如果我使用然後我的代碼運行正常,但我覺得不安約不使用錯誤..我該怎麼辦?

+0

如果您實際上沒有對錯誤進行任何操作,那麼您可以傳遞NULL。您通常可以檢測是否發生錯誤,因爲該方法返回nil,因此不會像錯過發生錯誤的事實。 – 2012-02-09 00:35:34

回答

11

大概是因爲你正在重複使用在完成處理程序中傳遞給你的error。它將被作爲__strong通過,然後你將它傳遞到需要的地方__autoreleasing。嘗試改變這種代碼:把NSError *error=nil;定義當外界的^塊發生

... 
[NSURLConnection sendAsynchronousRequest:req queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     NSError *error2 = nil; 
     NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLData:data error:&error2]; 
     ... 
    }); 
}]; 
... 
2

此Xcode的錯誤。

塊內,然後error:&error工作正常。

相關問題