EXC_BAD_ACCESS при отклонении настроенного вида входа в систему - PullRequest
0 голосов
/ 30 марта 2012

У меня следующий код в главном AppDelegate.m, вызывающий мой собственный класс (тип UIViewController), используемый для процесса входа в систему:

    #import "Auth.h"
    @class Auth;
    ...
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [_window makeKeyAndVisible];
    Auth *viewController = [Auth alloc];
    [_window addSubview:viewController.view];
    return YES;

}

После выделения представления ( не включено в раскадровку ) с:

  self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  <add button and other things>

Правильно отображается в кнопке.

Проблема возникает, когда мне нужно отменить ее, чтобы выполнить«нормальный» поток, формируемый другими представлениями, связанными с раскадровкой (три контроллера ViewController уже хорошо связаны)

   [self.parentViewController dismissModalViewControllerAnimated:YES]

но я всегда получаю:

EXC_BAD_ACCESS на

   int main(int argc, char *argv[]) { @autoreleasepool {
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
   }} 

Кто-нибудь может мне помочь?Заранее большое спасибо.


Я попробовал все ваши предложения безуспешно.Возможно, другая проблема с делегированием.Как я могу определить делегата для моего класса Auth?Спасибо.

Ответы [ 3 ]

0 голосов
/ 31 марта 2012

Eimantas прав в том, что вы обычно никогда не вызываете alloc на что-либо, не вызывая немедленно назначенный инициализатор (init или initWithFrame или что-то еще). Это очень странно; Я бы посмотрел на это первым.

Или, если вы хотите, чтобы у этого контроллера представления было добавлено представление в основное окно, почему бы не сделать так, чтобы основное окно .xib просто указывало класс владельца файла как Auth?

0 голосов
/ 01 апреля 2012

Я решил добавить UIView на StoryBoard, а затем использовать:

   Auth *login = [self.storyboard instantiateViewControllerWithIdentifier:@"Auth"]; 
   [self presentModalViewController:login animated:YES];

На данный момент

  [self dismissModalViewControllerAnimated:YES]; 

изнутри Auth успешно.

0 голосов
/ 30 марта 2012

Также установите точку останова исключения в XCode 4, чтобы перехватить это исключение и дополнительно исследовать текущую трассировку стека.

Вы можете установить эту точку останова на панели Навигатора точек останова в XCode, щелкните в левом нижнем углу '+' идобавить точку останова исключения.

...