2011-12-25 14 views
2

今、私は、サーバーから膨大な量のイメージをダウンロードする必要のあるプロジェクトに携わっています。オンラインで推薦した後、私はASIHttpRequestを試しました。しかし、すべての必要なクラスを自分のプロジェクトにコピーすると、そのクラスで30以上のエラーが発生しました。ほとんどのエラーは、retain、release、またはautoreleaseの使用に関するものです。 Xcode 4.2.1を使用しているため、明示的な保持、リリース、および自動解放は禁止されています。しかし、他のいくつかの誤りはかなりばかげている。例えばASIHttpRequestのエラー

は、クラスASIDataCompressor.mに、以下の方法がNSDataの

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

を返す必要がありますが、私は方法の1つの部分はいくつかの他のクラスでも同様の問題を抱えているNO

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

を返さない参照してください。

私の質問は以下のとおりです。

  1. は私が間違ったパッケージをダウンロードしましたか?

  2. コンパイラにこれらの明示的な保持、解放、および自動解放を無視させる方法を教えてください。

+2

間違ったパッケージをダウンロードしたわけではありません。ASIHTTPRequestがXCode 4.2の変更を反映するように更新されていないことだけです。 ASIを使用する場合は、設定を微調整する必要があります(ARCなどを無効にする)。 –

+1

代わりにAFNetworkingをチェックすると、ASIよりも最新のものだと聞きました。 –

答えて

2

プロジェクトを作成したときにARCが有効になっているため、「Xcode 4.2.1明示的な保持、リリースおよび自動解放は禁止されています。 ARCを無効にする。

ASIDataCompressor.mここでは正常に表示されます。どのように間違っているのか分かりません。上述のようにARCを使用しているとき[request release]

0

は、あなたが使用することはできません(と、不要になった)/リリースの/ etcを保持:あなたは自分のプロジェクトにASIHTTPを拾ったので、これを読んでいるので

私はAFNetworkingへの切り替えをお勧めします。

プロジェクト全体にARCが残っているようにするには、その1つのファイルに対してプロジェクトを無効にすることができます。

ARCを使用するようにプロジェクトを移行すると、すべてのObjective-Cソースファイルのデフォルトとして-fobjc-arcコンパイラフラグが設定されます。特定のクラスのARCを無効にするには、そのクラスの-fno-objc-arcコンパイラフラグを使用します。 Xcodeで

target Build Phases tabに行く>は、ソースファイルのリストを明らかにするCompile Sources groupを開く>あなたはフラグを設定したいファイルをダブルクリック>ポップアップパネルで-fno-にObjCアークを入力します。 [完了]をクリックします。