В настоящее время я пишу приложение для iOS с Xcode 4.3.2. В большинстве частей моего кода отладка с LLDB работает просто отлично. Тем не менее, в какой-то момент я получаю странное сообщение, когда перебираю свой код. Когда я наводю курсор мыши на iVar, он говорит:
Ошибка [IRForTarget]: не удалось найти косвенный символ ива Objective-C OBJC_IVAR _ $ _ MyFancyClass.iVar
вместо того, чтобы показывать мне значение. Тем не менее, в Variables View
, я вижу это очень хорошо. Пока я не выберу Print Description of ...
, то есть, потому что тогда XCode падает ...
Когда я использую GDB, зависание работает, но тип и значения переменной неверны.
Я понимаю, что с моим кодом что-то не так, что, в свою очередь, приводит к сбою отладчиков. Тем не менее, код работает нормально. Я хотел бы предоставить пример кода, но класс довольно длинный, и я не могу точно определить точное местоположение моего провала. Так кто-нибудь сталкивался с подобным поведением?
ОБНОВЛЕНИЕ: На самом деле, кажется, что это происходит везде в моем коде, а не только в некоторых конкретных файлах. Если это помогает, в то время как LLDB показывает вышеуказанное сообщение, GDB всегда показывает объект класса, которому принадлежит iVar, а не сам iVar.
Похоже, что-то не так с управлением памятью. Например, если я скажу что-то вроде
[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];
селектор вызывается, даже если у меня есть
[notificationCenter postNotificationName:bar object:objB];