0

我正在尝试从 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];   
    }   
}
4

2 回答 2

1

我马上看到的一件事是你正在通过这个选择器调用你的方法:

" buttonUpdate:"

该方法签名中的冒号意味着应该传递一些对象"- (void) buttonUpdate: (NSString *) maybeAString(例如“。并且您传递的是 nil,这可能是问题所在(如果该方法期望传递一些真实的东西 - 而不是 nil - ) .

于 2013-06-21T11:10:08.140 回答
1

“buttonUpdate:” 表示您有一个名为 buttonUpdate 的方法并具有参数。您正在 performSelectorOnMainThread 调用中的“withObject”中发送“nil”。由于 nil 参数或您的方法不接受任何参数,您会遇到异常。

如果您的方法不带任何参数,请使用此行:

 [self performSelectorOnMainThread:@selector(buttonUpdate) withObject:nil 
    waitUntilDone:NO];
于 2013-06-21T11:14:41.720 回答