обновлен до xcode 4.2 теперь exc_bad_access на dimissModalViewcontroller - PullRequest
2 голосов
/ 29 декабря 2011

Привет, у меня странная проблема.

Мое приложение основано на примере кода «PageControl» (пример Apple). Он использует горизонтальную прокрутку, в которой происходит большинство вещей. Внизу у меня есть UIToolbar, с которого я вызываю модальный viewcontroller.

В XCode 4 все работало как чудо, после обновления до XCode 4.2 (с новым SDK) я получаю «exc_bad_access» на dimissModalViewcontroller. Самое смешное, что это происходит не сразу, а только после 2 или 3 раз представления и отклонения modalViewcontroller.

Чтобы упростить вещи, я вернулся к исходному коду выборки и попытался реализовать modalVieWcontroler в этом контексте. Пока не повезло.

В исходном коде PageControl я изменил тип ContentController с NSObject на UIViewController следующим образом:

@interface ContentController : UIViewController
{
    NSArray *contentList;
}

Я вызываю presentModalViewcontroller в подклассе (из ContentController) с именем PhoneContentController, например так: (я использую уведомление, чтобы я мог вызывать его из любого места)

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

    ExplanationsViewController *xplViewController = [[[ExplanationsViewController alloc] initWithNibName:@"Explanations" bundle:nil]autorelease];

    [self presentModalViewController:xplViewController animated:YES];
}

Увольнение modalViewcontroller вызывается из самого модального представления следующим образом: (уведомление используется для запуска другого материала)

 - (IBAction)onClose
{
    [self dismissModalViewControllerAnimated:YES];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:self];

}

Этот код прекрасно работает с iOS4 SDK, но иногда отображает excec_bad_access с iOS5 SDK. Когда я компилирую приложение с iOS4 SDK, оно также нормально работает на устройствах iOS5. Я пытался использовать зомби, но это не указывает на конкретный перевыпущенный объект. Я застрял на этом уже несколько дней ...

Я выложил копию примера проекта, который иллюстрирует проблему здесь http://www.sesni.biz/pagecontrol.zip

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Мне кажется, что проблема в методе onClose. Попробуйте сначала отправить сообщение без объекта (этот объект скоро станет недействительным).

 - (IBAction)onClose
{
    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:nil];
    [self dismissModalViewControllerAnimated:YES];

}
0 голосов
/ 01 января 2012

Найдена проблема: я изменил тип ContententController с NSObject на UIViewcontroller.Это работает нормально с iOS4 SDK, но вылетает с iOS5 SDK.

...