2013-06-21 85 views
0

我想從下面的didUpdateToLocation方法調用方法。在我的buttonUpdate方法中,我正在更新接口,並試圖避免如果將代碼塊直接放在didUpdateToLocation方法中會引起的延遲。出於某種原因,下面的代碼導致我的應用程序崩潰。有誰知道爲什麼?謝謝!performSelectorOnMainThread嵌入在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

什麼*是*崩潰? –

+0

你可以把崩潰日誌 – IronMan

回答

1

有一件事我馬上看到的是,你通過這個選擇調用你的方法:

buttonUpdate:

該方法簽名結腸意味着有一些對象這是應該(例如"- (void) buttonUpdate: (NSString *) maybeAString「),並且你傳遞零,這可能是問題(如果該方法期望一些真實的 - 而不是零 - 要傳遞)

+0

你先生真棒!感謝您的解釋!!! – user2492064

+0

可以在7分鐘內接受:) – user2492064

+0

aww(臉紅)。我不是很棒。我只是想幫助人們走上成功的正確道路。 –

1

「buttonUpdate:」表示您有一個名稱爲buttonUpdate並具有參數的方法。您正在您的performSelectorOnMainThread調用中的'withObject'中發送'nil'。由於nil參數或者你的方法沒有任何參數,你會得到異常。

使用這一行,如果你的方法不帶任何參數:

[self performSelectorOnMainThread:@selector(buttonUpdate) withObject:nil 
    waitUntilDone:NO]; 
相關問題