2011-12-25 59 views
2

現在我參與了一個需要從服務器下載大量圖像的項目。在線推薦之後,我嘗試了ASIHttpRequest。但是當我將所有必要的課程複製到我的項目中時,我在這些課程中遇到了30多個錯誤。大部分錯誤都是關於使用保留,釋放或autorelease。因爲我使用的是Xcode 4.2.1,所以禁止顯式保留,釋放和autorelease。但其他一些錯誤是相當荒謬的。錯誤在ASIHttpRequest

例如,在類ASIDataCompressor.m,以下方法應返回的NSData

- (NSData *)compressBytes:(Bytef *)bytes length:(NSUInteger)length error:(NSError **)err shouldFinish:(BOOL)shouldFinish 

但我看到的方法的一個部分返回NO

if (status == Z_STREAM_END) { 
     break; 
    } else if (status != Z_OK) { 
     if (err) { 
      *err = [[self class] deflateErrorWithCode:status]; 
     } 
     return NO; 
    } 

其他一些類也有類似的問題。

我的問題是:

  1. 難道我下載了錯誤的包?

  2. 如何讓編譯器忽略那些顯式的retain,release和autorelease?

+2

您沒有下載錯誤的軟件包,只是說ASIHTTPRequest未被更新以反映XCode 4.2中的更改。如果你想使用ASI,你將不得不調整你的設置(禁用ARC等)。 –

+1

取而代之的是AFNetworking,我聽說它比ASI更爲流行。 –

回答

2

「Xcode 4.2.1,顯式保留,釋放和autorelease被禁止」,因爲您在創建項目時啓用了ARC。禁用ARC。

ASIDataCompressor.m方法在這裏看起來不錯。不知道你是怎麼搞錯的。

既然你只是在你的項目中拿起ASIHTTP我建議切換到AFNetworking因爲閱讀:[request release]

0

如上所述,使用ARC時,不能使用(而不再需要)保留/釋放的/ etc 。

如果您希望整體項目仍然具有ARC,則可以爲該文件禁用該項目。

當您遷移項目以使用ARC時,編譯器標誌被設置爲所有Objective-C源文件的默認值。您可以使用該類的編譯器標誌使用-fno-objc-arc編譯器標誌來禁用特定類的ARC。

在Xcode中,去target Build Phases tab>打開Compile Sources group揭示源文件列表>雙擊您要設置標誌的文件>在彈出的面板中輸入-fno -objc弧 ,然後點擊完成。

相關問題