2013-04-05 23 views
6

我試圖調試問題的iOS 5.1下運行,當我停在獲得誤差裏面的代碼調試器,嘗試打印一些與調試我得到的消息:「自我」不可用調試器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不再具有有意義的值 - 或者說它的NSLog知道它是ALAssetsGroup對象。這個值被分配在一個地方(並且被記錄下來以便跟蹤它),並且我可以看到使用鍵值觀察的初始分配,並且我沒有看到它以一種KVO分類的方式被改變。

+0

你不在Objective-C++文件中嗎?我以這種瘋狂的語言看到了很多這類錯誤(我最大限度地減少了它的使用)。另一件需要檢查的事情是,你沒有調試發佈版本(某些棧幀可能會被優化)。只是猜測。 – 2013-04-05 22:41:39

+0

謝謝。直接Objective-C和調試版本,所以沒有喜悅。 – 2013-04-05 22:53:28

+0

如果'self'被編譯器優化了,就可能發生這種情況。如果您正在模擬器上進行調試,您可以嘗試打印'$ edi' – 2013-04-06 00:19:38

回答

2

這是一個錯誤調試器(是的,想象一下!)

只需重新啓動的XCode,它不應該成爲你的問題了:)

編輯:

琪!我正在想別的東西。

您要創建一個保留週期,截至目前,調試器分類這個特定的保留週期這種方式(就像我說的,一個bug)。

爲了解決這個問題,創建self弱副本:

__weak __typeof(self)weakSelf = self;

後來這傳給你麻煩self

變化self.objectweakSelf.object

+0

這可能是一個錯誤,但重新啓動XCode不會使其消失。 – 2013-04-06 22:29:10

+0

看看我的編輯。 – jakenberg 2013-04-07 07:42:02

0

它發生在同一給我Xcode 5和iOS 6.1開發。

我在編譯版模式,如果有人有這個問題再次檢查您在調試模式下進行編譯。

4

在生成設置,設置Precompile Prefix HeaderNO固定對我來說。

+0

這個也適用於我。謝謝 – inigo333 2016-05-05 11:22:48

相關問題