2013-04-05 14 views
6

iOS 5.1で動作している問題をデバッグしようとしていますが、デバッガでエラーを取得して何かを印刷しようとするコード内のデバッガで停止すると、メッセージ:"self"はiOS 5.1のデバッガでは使用できません

error: warning: Stopped in a context claiming to capture an Objective-C object pointer, but 'self' isn't available; pretending we are in a generic context

すみません。誰か私がここに自分自身でしたことを知っていますか?

誰かが見たいと思うほどコードが複雑です。私は、デバッガのメッセージの意味を誰かが教えてくれることを大いに期待しています。

これは断続的にしか失敗しませんでしたが、現在はほとんど失敗しています。操作は一般的に(またはいつものように)iOS 5.1で最初に試してみるのが初めてで、iOS 6ではいつも動作します。

一般的なコンテキストを知ることができれば... Iちょうど書き込まれたオブジェクトをALAssetsGroupに追加しようとしているので、これは非UIスレッドの完了ブロックにあります。私は完成ブロックのための合理的な外観のスタックバックトレースを持っています。 このエラーは、格納されたALAssetsGroupが意味のある値を持たなくなったためです。つまり、ALAssetsGroupオブジェクトであることを知っているNSLogが意味する値です。この値は1つの場所に割り当てられており、記録されているので記録しています.KVOソートの方法で変更されたことはありません。

+0

あなたはObjective-C++ファイルではありませんか?私はその狂った言葉でこの種のエラーをたくさん見てきました(私はその使用を最小限に抑える多くの理由の1つです)。もう一つ確認するのは、リリースビルド(一部のスタックフレームが最適化されている可能性がある)をデバッグしていないことです。ちょうど推測する。 –

+0

ありがとうございます。ストレートObjective - Cとデバッグビルドので、そこに喜びを構築しないでください。 –

+0

'self'がコンパイラによって最適化されると、それが起こります。シミュレータでデバッグしている場合は '$ edi'を試してみてください –

答えて

2

これは、デバッガのバグです(うん、それを想像してみてください)もう

は単にXCodeのを再起動し、そしてそれはあなたのために問題になることはありません:)

EDIT:

プシュケを!私は別のことを考えていた。

あなたは保持サイクルを作成しています。今のところ、デバッガはこの特定の保持サイクルをこのように分類します(私が言ったように、バグ)。それは同じに起こっていたself.object

+0

これはバグかもしれませんが、XCodeを再起動しても遠ざけることはできません。 –

+0

私の編集をチェックしてください。 – jakenberg

0

weakSelf.object

変更:あなたの悩みを与えているselfためにその後

__weak __typeof(self)weakSelf = self;

:この問題を解決するには

は、selfの弱いコピーを作成しますXcode 5とiOS 6.1の開発を私に教えてください。

私は誰かがこの問題を持っている場合は、再度あなたがデバッグモードでコンパイルすることを確認し、リリースモードでコンパイルされました。

4

ビルド設定で、Precompile Prefix HeaderNOを設定してください。

+0

これも私のために働いた。ありがとう – inigo333

関連する問題