2010-07-06 54 views
1

我必須在iPhone OS 4.0中運行我的應用程序。 (在模擬器中)。CLLocation Manager委託沒有在iPhone OS 4.0中調用

-(BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self newLocationUpdate]; 
} 

-(void)newLocationUpdate 
{ 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    [locationManager startUpdatingLocation]; 

} 

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    [locationManager stopUpdatingLocation]; 
} 

在此CLLocationManager委託方法沒有被調用。我們應該做什麼改變,以便調用委託方法?

回答

3

我懷疑你的「locationManager」實例是過早發佈的。

是否屬性? 如果是這樣,那麼改變從:

locationManager = [[CLLocationManager alloc]] init]; 

到:

self.locationManager = [[CLLocationManager alloc] init]; 

,並確保財產申報:

@property (nonatomic, retain) CLLocationManager * locationManager; 

而且不要忘了後,將其釋放在適當情況下。

+0

我同意保留的屬性會使事情在長期內保持簡單,但如果您只將保留計數爲1(alloc,init和no autorelease)的位置管理器分配給保留屬性,它將最終結束保留數爲2,你手上有泄漏。所以使用「自我」。方法與一個保留的屬性,並添加一個autorelease該alloc-init的結尾。 – Heiberg 2011-09-28 18:59:29

相關問題