簡體   English   中英

帶有LLDB的Xcode 4.3中的奇怪錯誤消息

[英]Weird error message in Xcode 4.3 with LLDB

我目前正在使用Xcode 4.3.2編寫iOS應用程序。 在我的代碼的大多數部分中,使用LLDB進行調試工作正常。 但是在某些時候,我在逐步執行代碼時收到了一條奇怪的消息。 當我將鼠標懸停在iVar上時,它說

錯誤[IRForTarget]:找不到Objective-C間接ivar符號OBJC_IVAR _ $ _ MyFancyClass.iVar

而不是向我展示價值。 但是,在Variables View ,我可以看到它很好。 直到我選擇...的Print Description of ... ,因為那時,Xcode崩潰......當我使用GDB時,懸停工作,但變量的類型和值是錯誤的。

我認為我的代碼有問題,這反過來導致調試器失敗。 但是,代碼運行正常。 我很樂意提供一些樣本代碼,但課程相當長,而且我無法確定我的搞砸的確切位置。 那么有沒有人遇到類似的行為?

更新:實際上,似乎這在我的代碼中到處發生,而不僅僅是在某些特定文件中。 如果它有幫助,當LLDB顯示上述消息時,GDB總是顯示擁有iVar的Class的對象,而不是iVar本身。 看起來內存管理有問題。 例如,如果我說的話

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];

即使我有選擇器也會被調用

[notificationCenter postNotificationName:bar object:objB];

此錯誤的原因是錯誤的構建設置,如問題發表評論中的討論所示。 這可以通過將“部署后處理”設置回調試模式的NO(默認值)來修復。

確保將MyFancyClass.m添加到目標

您發送nsnotification的選擇器需要有一個(且只有一個)參數,這是一個NSNotification。 所以當你這樣做時:

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];

-(void)foo
{

}

...你需要這樣做:[notificationCenter addObserver:self selector:@selector(foo :) name:bar object:objA];

-(void)foo:(NSNotification *)notification
{

}

注意notificationCenter選擇器中的冒號和foo的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM