我试图从didUpdateToLocation方法调用一个方法,如下所示。在我的buttonUpdate方法中,我正在更新接口,并且我试图避免如果我将代码块直接放在didUpdateToLocation方法中而导致的延迟。出于某种原因,下面的代码导致我的应用程序崩溃。有谁知道为什么?谢谢!
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation
*)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
[self performSelectorOnMainThread:@selector(buttonUpdate:) withObject:nil
waitUntilDone:NO];
}
}
答案 0 :(得分:1)
我立即看到的一件事是你通过这个选择器调用你的方法:
“buttonUpdate:
”
该方法签名中的冒号暗示存在一些应该传递的对象(例如"- (void) buttonUpdate: (NSString *) maybeAString
“。并且你传递的是nil,这可能是问题(如果方法是期待一些真实的 - 而不是零 - 被传递出来。
答案 1 :(得分:1)
“buttonUpdate:”表示你有一个名为buttonUpdate的方法并且有参数。您在performSelectorOnMainThread调用中的'withObject'中发送'nil'。由于nil参数导致异常,或者您的方法不接受任何参数。
如果您的方法不带任何参数,请使用此行:
[self performSelectorOnMainThread:@selector(buttonUpdate) withObject:nil
waitUntilDone:NO];