Не могу заставить Зомби работать в XCode - PullRequest
0 голосов
/ 31 октября 2010

Я пытаюсь решить мою первую действительно сложную проблему EXC_BAD_ACCESS. Из многих уроков и блогов я вижу, что я могу использовать Зомби, чтобы помочь мне понять, где я ошибаюсь. Но я не думаю, что мои зомби работают, и я ОПРЕДЕЛЕННО не получаю ничего полезного из консоли.

Когда я запускаю программу, я вижу это: This GDB was configured as "x86_64-apple-darwin".Setting environment variable "NSZombieEnabled" to null value.

В конце концов, я вижу пару трассировок NSLog, которые я использовал, а затем:

Program received signal:  “EXC_BAD_ACCESS”.

Никакой помощи. Есть идеи? У меня есть скрытое подозрение, что даже с работающими зомби он не сможет сказать мне, где произошел плохой доступ. Цель C меня огорчает - это заняло бы 3 секунды в ActionScript :(

<Ч />

Вы говорите, что сбой здесь (отредактируйте вопрос в следующий раз):

- (IBAction) toggleView{
if(switchableView.subviews.count != 0)
    [[switchableView.subviews objectAtIndex:0] removeFromSuperview];
UIViewController* newView = (viewSelector.selectedSegmentIndex == 0) ? [Login new] : [UserRegistration new];
[switchableView addSubview:newView.view];
//[newView release];
}

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

На самом деле вы получаете что-то полезное с консоли.Это говорит о том, что вы не включили NSZombie - «Установка переменной среды« NSZombieEnabled »в нулевое значение.»

Значение должно быть ДА, а не нуль.

Исполняемые файлы -> Ваше имя цели-> Аргументы -> Переменные, которые должны быть установлены в среде

Даже без включенных NSZombies должно быть очень просто увидеть, откуда у вас плохой доступ из стека вызовов.Action script - это язык сценариев.

0 голосов
/ 31 октября 2010

Нет причин, по которым эта ошибка должна быть вызвана чрезмерно освобожденным объектом.Существует множество других причин, по которым вы можете столкнуться с ошибкой.

Program received signal: “EXC_BAD_ACCESS”.

ОК - так где же происходит сбой?Что такое обратный след?Он должен был аварийно завершить работу с отладчиком, и отладчик должен показать вам кучу подробностей о сбое.

Опубликуйте обратную трассировку и любой ваш код, который окажется в этой трассировке.

Это не обратный след, но он дает немного больше контекста.Обратный след был бы полезен в том смысле, что он точно покажет, где происходит сбой.

Что касается зомби, я считаю, что проще использовать пункт меню Run -> Run With Performance Tool -> Zombies для запуска инструментов при обнаружении зомби.mode.

То, что сбой исчезает, когда вы закомментируете release, безусловно, указывает на проблему с управлением памятью.Код, который вы разместили, выглядит нормально, при условии, что вы не переопределили new.

Вы пробовали "Построить и проанализировать"?

То, что вы получаете неожиданную таблицу, указывает на то, что [очевидно] есть другие проблемы в вашем коде.Это также может содержать проблемы с управлением памятью?

Кроме того - если removeFromSuperview: приводит к тому, что представление, которое позднее запрашивается для выбранного сегмента, освобождает и освобождает, что также может вызвать сбой.

Цель C огорчает меня - в ActionScript это заняло бы 3 секунды

Все, что вы не знаете, огорчает вас, когда вы пытаетесь относиться к нему как к чему-то не связанному с вами.знать.Успех с любым языком, инструментом или новой средой зависит как от вашего отношения, так и от деталей инструмента.

Я бы посоветовал вам сделать шаг назад, сделать несколько уроков и / или прочтите документацию по отладке приложений .

...