2011-12-07 8 views
6

iOS 4.3.xでキーワード@autoreleaseを使用してコードを実行すると、このエラーが発生します。@autoreleasepoolを使用するには、どのiOSバージョンが必要ですか?

dyld: lazy symbol binding failed: Symbol not found: _objc_autoreleasePoolPush 
    Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 

dyld: Symbol not found: _objc_autoreleasePoolPush 
    Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 

キーワードは明示的な自動解放プールの作成/削除を置き換えたものだと思っていました。とにかくそうではなく、誤りを投げた。特定のバージョンのiOSでのみサポートされていますか?では、このキーワードのバージョン情報はどこで確認できますか?

+1

これはARCを必要としないhttp://stackoverflow.com/questions/8069570/autoreleasepool-make-errors – RolandasR

答えて

4

あなたは@autoreleasepoolを参照していますか?

Xcode 4.2とiOS 5 SDKを使用している場合は、ビルドターゲットがiOS 4.3.xのアプリで@autoreleasepoolを使用できます。 ARCが必要であることを示唆している@autoreleasepoolの "Objective-C文法にARCが文を導入する"と述べたtransitioning to ARC guidelinesにもかかわらず、 "この構文はすべてのObjective-Cモードで利用可能です。

特に明白なドキュメントではありませんが、iOS 5 SDKを使用している場合は、ARCの有無にかかわらず@autoreleasepool構文を使用できます。第一世代のiPhoneで実行iOS3.0上

+0

@autoreleasepoolを役に立つかもしれません。参照してください.. http://stackoverflow.com/q/7950583/927947 – NJones

+0

ああ、面白い、これを修正し、リンク先のドキュメントの重要な部分を強調表示するために私の答えを更新した最初の読書で誤解される可能性が...私がやったように。 :) –

3

ちょうどテスト@autoreleasepoolは{} -

+0

それは本当です、私のiPhone 3G iOS 3.1.3で問題はありませんでした。 – JomanJi

3

は、シミュレータのバグであるように思わ問題なく動作します。

4.2.1ではなく、4.2に展開ターゲットを設定することができました。

enter image description here

+0

私はまったく同じ問題を抱えていましたが、これも私のために解決しました – wasabi

+0

これは私のために働いていました。 +1その:) – pahan

関連する問題