Проверка работоспособности: происходит сбой UIBarButtonItem при попытке выполнить действие - PullRequest
1 голос
/ 30 марта 2010

Один из моих пользователей сообщает о сбое на своем устройстве iPhone 3GS. Другие устройства того же типа не сообщают о подобном поведении. Он прислал мне журнал сбоев и, прочитав его, я не уверен, что делать дальше. Я надеюсь, что неправильно интерпретирую журнал сбоев, но похоже, что мое действие еще не было вызвано.

Вот как я создаю и настраиваю UIBarButtonItem:

- (void)viewDidLoad {
    [super viewDidLoad];
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(addLog:)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];
}

Это мой метод действия:

- (IBAction)addLog:(id)sender {
    MyViewController *myController = [[MyViewController alloc] initWithNibName:@"MyNib" bundle:nil];
    UINavigationController *subNavigationController = [[UINavigationController alloc] initWithRootViewController: myController];
    [self presentModalViewController:subNavigationController animated:YES];
    [myController release];
    [subNavigationController release];
}

Это журнал сбоев:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000Crashed Thread:  0
Thread 0 Crashed:
0   libSystem.B.dylib                   0x0007e98c __kill + 81   libSystem.B.dylib                   0x0007e97c kill + 4
2   libSystem.B.dylib                   0x0007e96e raise + 10
3   libSystem.B.dylib                   0x0009361a abort + 34
4   MyApp                               0x000042e8 0x1000 + 13032
5   CoreFoundation                      0x00058ede -[NSObject performSelector:withObject:withObject:] + 18
6   UIKit                               0x0004205e -[UIApplication sendAction:to:from:forEvent:] + 78
7   UIKit                               0x00094d4e -[UIBarButtonItem(Internal) _sendAction:withEvent:] + 86
8   CoreFoundation                      0x00058ede -[NSObject performSelector:withObject:withObject:] + 18
9   UIKit                               0x0004205e -[UIApplication sendAction:to:from:forEvent:] + 78
10  UIKit                               0x00041ffe -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
11  UIKit                               0x00041fd0 -[UIControl sendAction:to:forEvent:] + 32
12  UIKit                               0x00041d2a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 350
13  UIKit                               0x0004263e -[UIControl touchesEnded:withEvent:] + 330
14  UIKit                               0x00041656 -[UIWindow _sendTouchesForEvent:] + 318
15  UIKit                               0x00041032 -[UIWindow sendEvent:] + 74

1 Ответ

2 голосов
/ 30 марта 2010

Отчет о сбое не символизируется. Я могу позвонить из-за строки:

4   MyApp                               0x000042e8 0x1000 + 13032

В символическом отчете о сбое эта строка показывает, какой из ваших методов произошел сбой.

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

Они необходимы для обозначения отчетов о сбоях.

Если у вас сохранены эти файлы, вам нужно убедиться, что они находятся в месте, доступном для прожекторов. Если пользователь отправил вам отчет о сбое, попробуйте перетащить его на вкладку «Отчет о сбое» в окне «Организатор» Xcode. Это должно попытаться символизировать отчет о сбое (но будет успешным, только если у вас есть .dSYM и комплект приложений).

...