EXC_BAD_ACCESS (код = 2, адрес = 0x3)

71
8

Привет, я получаю следующую ошибку из этого кода:

EXC_BAD_ACCESS (code=2, address=0x3)

Когда я нажимаю кнопку воспроизведения, я в основном зацикливался на CFRetain.

Я не могу понять, в чем проблема с этим.

XCode указывает именно на эту строку:

[NSDictionary dictionaryWithObjectsAndKeys:[self getCorrectName:oldController], @"ViewController", sec, @"duration", nil];

Я проверил оба значения словаря, и они, похоже, проверяют.

enter image description here

- (NSString *)getCorrectName:(UIViewController *)viewController {
if (viewController.class == [UINavigationController class]) {
UIViewController *vc = [viewController.childViewControllers objectAtIndex:0];
return NSStringFromClass(vc.class);
} else {
return NSStringFromClass(viewController.class);
}
}

# pragma mark - UITabBarControllerDelegate

- (BOOL)tabBarController:(UITabBarController *)tbController shouldSelectViewController:(UIViewController *)viewController {
// Tracking which controller will be clicked
[[Mixpanel sharedInstance] track:@"tab_clicked"
properties:[NSDictionary dictionaryWithObjectsAndKeys:
[self getCorrectName:viewController], @"ViewController", nil]];

// Tracking how long was spent on the last controller
UIViewController *oldController = [self.childViewControllers objectAtIndex:self.selectedIndex];
if (viewController != oldController) {
NSTimeInterval secondsBetween = [self.start timeIntervalSinceNow];
NSInteger sec = -1 * (secondsBetween + 0.5); // round up and down
if (sec > 0) {
NSLog(@"Changing controllers from %@, %d seconds", [self getCorrectName:oldController], sec);
[NSDictionary dictionaryWithObjectsAndKeys:[self getCorrectName:oldController], @"ViewController", sec, @"duration", nil];
/*
[[Mixpanel sharedInstance] track:@"tab_viewed"
properties:[NSDictionary dictionaryWithObjectsAndKeys:
[self getCorrectName:oldController], @"ViewController", sec, @"duration",
nil]];
*/
self.start = [NSDate date];
}
}
return YES;
}

Есть идеи?

спросил(а) 2013-04-18T05:40:00+04:00 7 лет, 6 месяцев назад
1
Решение
58

NSInteger НЕ является классом.

Использовать NSNumber

ответил(а) 2013-04-18T06:39:00+04:00 7 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема