2014-03-28 42 views
1

我是iOS編程的新手,並且正在編寫一個基於用戶位置的練習應用來完成任務。在iOS中獲取當前位置的靜態方法

我想什麼有是有一個簡單的靜態功能的MyLocationManager包裝類,像

+(CLLocation *) getCurrentLocation; 

因此它可以被稱爲普遍。然而,我發現通常檢索位置的方法是實現接口有一個成功/失敗處理程序,並且通常將代碼放置在控制器中。

我想知道是否有建議的方式來使像我提到的這樣一個集中的工具類,並很好地包裝檢索位置代碼,而不存在於許多不同的控制器?

回答

1

國際海事組織,你想存檔是不是最佳做法。 我認爲在這種情況下最好的方法是使用塊作爲完成手柄。 它看起來像這樣

@implementation YourController 

-(void)updateLocationAndDoSomething 
{ 
    [Utilities startUpdateLocationWithCompletionHandler:^(CLLocationCoordinate2D location, BOOL *successed){ 
     //your custom code here 
    }]; 
} 
@end 

這裏是一個容易理解的關於塊http://www.appcoda.com/objective-c-blocks-tutorial/在案例教程你不知道如何

方式二,使用delegation,你的控制器看起來會像這樣

@implementation YourController 

-(void)gotLocationAndDoSomething:(CLLocationCoordinate2D) location 
{ 
    //your custom code here 
} 

-(void)failedToGetLocation 
{ 

} 
@end 

如果您嘗試將它們全部放入一個Utility類中,在某些情況下可能會有這種情況,但它會很快變得很難看,很難維護。

0

可能不是理想的方式,但現在,將變量存儲在您的appDelgate中,並在需要時從其中抓取它。

如果您需要多次調用該函數,那麼是,頂點一個Utils類並將所有實用程序/其他方法放在那裏。

包括你需要它的類並獲得你的位置。