2011-12-30 16 views
4

私は、展開ターゲット4.0とベースsdk 5.0のiPhoneアプリを持っています。アプリは、iOS 5シミュレータ上の細かい動作しますが、私は、アプリchrashes 4.3シミュレータをstatを、私はこれを取得する場合:iOS 4でiOS 5アプリを実行するのが難しい

dyldの:怠惰なシンボル結合に失敗しました:シンボルが見つかりません:から参照 _objc_retainAutoreleasedReturnValue:/ユーザ/ヨアキムを/ライブラリ/ Application Support/iPhone Simulatorの /4.3.2 /アプリケーション/ F6CE76EA-DA7E-4BAC-A3AC-3CE2B51C0CD9/PingPalARC.app/PingPalARC に期待: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4 .3.sdk /システム/ライブラリ/フレームワーク/ Foundation.framework/Foundation

dyld:シンボルが見つかりません:_objc_retainAutoreleasedReturnValue 012 /ユーザ/ヨアキム/ライブラリ/ Application Support/iPhone Simulatorの /4.3.2 /アプリケーション/ F6CE76EA-DA7E-4BAC-A3AC-3CE2B51C0CD9/PingPalARC.app/PingPalARCに期待 : /開発/プラットフォーム/から参照 iPhoneSimulator.platform /開発/ SDKに/ iPhoneSimulator4.3.sdk /システム/ライブラリ/フレームワーク/ Foundation.framework /財団

sharedlibrary適用負荷-ルール全て(GDB)

プロジェクトは使用しません。 ARCはデフォルトではいくつかのクラスがありますが、コンパイルソースの下で-fobjc-arcフラグを指定してARCを有効にしています

私は弱い参照を使用せず、私はストーリーボードを使用しないので、私のアプリがiOS 4.xで動作しない理由がわかりません。誰もが、私は私のアプリは両方のiOS 4と5

を追加しましたフレームワーク上で動作するために見逃しているものを私に伝えることができます:本当に システム構成 地図キット CFNetwok コア場所の答えを

+0

関連スレッド:http://stackoverflow.com/q/11842465/96716 –

答えて

2

はないが、誰かが私よりももっと知っている人を助ける場合のためにもっと詳しい情報...

objc_retainAutoreleasedReturnValue(obj)は、その名前が言っているとおりです。概念的には、指定されたオブジェクトが自動解放プールにある場合は、そこから取り出して暗黙的に保持し、後で適切なリリースを追加します。したがって、概念的に一時オブジェクトが自動解放プールに積み重なったときに発生するメモリボトルネックの問題を回避する方法です。それは最適化であり、新しい動作ではありません。

ARCコンパイラは、ARCファイルの1つにARCコンパイラを挿入します。このARCファイルでは、自動解放されたオブジェクトを受け取るメソッドがあります。あなたが言うように、それは弱い参照とストーリーボードの両方に無関係であり、論理的には、iOS 4との互換性を維持するために単純に行うことができないものです。

私は完全ではないが、胃には明らかではない回避策を完全には確信していません。ARCクラスを変更して自動リリースされたオブジェクトを受信したり、ARCを完全に無効にしたりしないようにします。 Appleは動的にリンクされたライブラリの展開を許可していないので、iOS 4デバイスの代わりにobjc_retainAutoreleasedReturnValueの代替手段を提供するという安全な方法は考えられません。

+0

hmm、私は自分のコードを書き直さなければならないと心配しました。あなたの助けをありがとう – joakimb

3

あなたはiOS 4に組み込まれていないARCを使用しています。展開ターゲットを4に設定したので、arcliteライブラリが含まれていますか?https://devforums.apple.com/message/588316

(ああ、それはあなたがやったように聞こえるが、あなたはARCを使用しているIDEを語っていません。あなたはそれを自分を含める必要がありますので。)

+0

うーん、明日それを見て、それがどのように行ったか教えてくれる – joakimb

1

autoreleasepoolブロック内のすべての一時変数の宣言を追加します。関数の中で。

関連する問題