CLLocation не равен nil, но попытка его распечатать выдает EXC_BAD_ACCESS - PullRequest
0 голосов
/ 06 мая 2010

Извините, это может быть нубский вопрос, но я работаю с CoreLocation, и это озадачено.

Я просматриваю currentLocation с помощью синглтона, рекомендованного на этом сайте, и когда я получаю объект currentLocation, он возвращает значение true, а не ноль. Однако, когда я пытаюсь распечатать его описание, он выдает EXC_BAD_ACCESS.

//WORKS Current location 8.6602e-290
NSLog(@"Current location %g",currLoc);

//DOESN'T WORK
NSLog(@"Current location %@",[currLoc description]);

//DOESN'T WORK - Is this causing the description to fail as well?
NSLog(@"Current location %g",currLoc.coordinate.latitude);

Почему я могу видеть что-то на первом, а не на других? Кстати, это выполняется на симуляторе 3.1.2. Спасибо.

Ответы [ 3 ]

1 голос
/ 06 мая 2010

currLoc.coordinate.latitude имеет тип double ... вы можете использовать% f, если% g не работает

NSLog(@"Current location %f",currLoc.coordinate.latitude);
0 голосов
/ 06 мая 2010
// malformed: %g format specifier expects type
// double, you're passing an objc object.
// sending arguments through (...) with the
// invalid types/widths is a near certain way
// to crash an app, and the data will be useless
// to the function called (NSLog in this case)
NSLog(@"Current location %g",currLoc);

// try running the app with zombies enabled.
// in short, enabling zombies (NSZombiesEnabled)
// is a debugging facility to determine whether
// you use an objc object which would have been freed.
NSLog(@"Current location %@",[currLoc description]);

// as long as currLoc is a pointer to a valid (non-freed)
// objc object, then this should be fine. if it is not valid
NSLog(@"Current location %g",currLoc.coordinate.latitude);
0 голосов
/ 06 мая 2010

currLoc может возвращаться TRUE для , а не для проверки Nil . Но могут быть шансы на освобождение объекта (висячий указатель) , который пройдет условие проверки на ноль. Это может быть вашей проблемой.

Вместо непосредственного использования члена currLoc используйте Accessor для currLoc . Это исправит вашу проблему:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...