EXC_BAD_ACCESS с IBACTION

Я читал много об этой проблеме, но мой все еще, кажется, отличается так или иначе. Таким образом от того, что я понял, EXC_BAD_ACCESS происходит с проблемами управления памятью.

Вещь, мой не кажется (!:)), чтобы быть там. Вещь, я простой добавил, что кнопка в IB, округленном, реагирует, никакое изображение. Я поднял трубку его с IBACTION, который я определил в своем классе. Этот метод не делает ничего (!) между прочим.

Так или иначе, как только я нажимаю кнопку, Сбои приложения, с "EXC_BAD_ACCESS".

Я ничего, конечно, не сверхвыпускаю, насколько я вижу, это. Что не так там?

Какие-либо подсказки?

Это - мой консольный журнал:

Loading program into debugger…
sharedlibrary apply-load-rules all
Program loaded.
target remote-mobile /tmp/.XcodeGDBRemote-148-79
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
Running…
[Switching to thread 11779]
[Switching to thread 11779]
(gdb) continue
2010-01-15 09:16:34.800 FlightControl1[1899:207] Table loaded
2010-01-15 09:16:35.200 FlightControl1[1899:207] 23
2010-01-15 09:16:35.350 FlightControl1[1899:207] debug
Program received signal:  “EXC_BAD_ACCESS”.
(gdb) 

Это - то, что я получаю, после того, как я поднялся стек:

#0  0x31ec3ebc in objc_msgSend ()
#1  0x33605784 in -[UIApplication sendAction:to:from:forEvent:] ()
#2  0x336056ec in -[UIApplication sendAction:toTarget:fromSender:forEvent:] ()
#3  0x336056b4 in -[UIControl sendAction:to:forEvent:] ()
#4  0x3360530c in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#5  0x33605f8c in -[UIControl touchesEnded:withEvent:] ()
#6  0x335fd9ac in _UIGestureRecognizerUpdateObserver ()
#7  0x30da1830 in __CFRunLoopDoObservers ()
#8  0x30de9346 in CFRunLoopRunSpecific ()
#9  0x30de8c1e in CFRunLoopRunInMode ()
#10 0x332e7374 in GSEventRunModal ()
#11 0x335adc30 in -[UIApplication _run] ()
#12 0x335ac230 in UIApplicationMain ()
#13 0x000027a8 in main (argc=1, argv=0x2ffff4d8) at /Users/SomePath/main.m:14
24
задан Icky 15 January 2010 в 08:36
поделиться

2 ответа

Я тоже мучился с этим несколько часов. Как и ожидалось, это оказалась проблема с памятью. Контроллер, выступающий в качестве цели для кнопки, был деаллоцирован. Это был корневой контроллер навигационного контроллера, представление которого было добавлено непосредственно в окно. Мой код выглядел так:

MyController *myController = [[MyController new] autorelease];
UINavigationController* navController = 
    [[[UINavigationController alloc] initWithRootViewController:myController] autorelease];
[window addSubview:navController.view];

Я предполагал, что myController будет сохранен при передаче его в качестве корневого контроллера UINavigationController, но это оказалось неверным. Решением было присвоить контроллер локальной переменной и освободить ее в dealloc. Интерфейс объекта, содержащего приведенный выше код, должен иметь:

...
@property (retain, nonatomic) MyController *myController;
...

А реализация:

self.myController = [[MyController new] autorelease];
UINavigationController* navController = 
    [[[UINavigationController alloc] initWithRootViewController:myController] autorelease];
[window addSubview:navController.view];

...

- (void)dealloc {
    [self.myController release];
    ...
    [super dealloc];
}
53
ответ дан 28 November 2019 в 22:53
поделиться

У меня есть мысль. Что случилось со мной лет назад. В IB свойство вашего представления подключено к вашему представлению?

Я когда-то отсоединил их, и приложение никогда не запускалось.

Кстати, хуже приходит к худшему, начните проект снова. Не стоит этих головных болей, если вы сделали 2 минуты работы до сих пор.

Добро пожаловать в мир программирования iPhone. Вам может понадобиться один из этих справедливо Wigsmen.com; -)

0
ответ дан 28 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: