获取当前位置

http://stackoverflow.com/questions/3535800/cllocationmanager-strange-memory-leak

#import <Foundation/Foundation.h>

#import <CoreLocation/CoreLocation.h>

@protocol MapLocationManagerDelegate 

@required

- (void)locationUpdate:(CLLocation *)location;

- (void)locationError:(NSError *)error;

@end

@interface MapLocationManager : NSObject <CLLocationManagerDelegate>{

CLLocationManager *locationManage;

id delegate;

}

@property (nonatomic, retain) CLLocationManager *locationManage;

@property (nonatomic, assign) id delegate;

@end

/*  

//调用例子

 h文件

 #import <UIKit/UIKit.h>

 

 #import "CoreLocationController.h"

 

 @interface CoreLocationDemoViewController : UIViewController <MapLocationManagerDelegate > {

 MapLocationManager *CLController;

 IBOutlet UILabel *locLabel;

 }

 

 @property (nonatomic, retain)  MapLocationManager *CLController;

 

 @end

 

 m文件

 

 - (void)viewDidLoad {

 [super viewDidLoad];

 

 CLController = [[ MapLocationManager alloc] init];

 CLController.delegate = self;

 [CLController.locMgr startUpdatingLocation];

 }

 

 - (void)locationUpdate:(CLLocation *)location {

 locLabel.text = [location description];

 }

 

 - (void)locationError:(NSError *)error {

 locLabel.text = [error description];

 }

 

 - (void)didReceiveMemoryWarning {

 [super didReceiveMemoryWarning];

 }

 

 

 - (void)dealloc {

 [CLController release];

 [super dealloc];

 }

 

*/

m

#import "MapLocationManage.h"

@implementation MapLocationManager

@synthesize locationManage, delegate;

- (id) init {

self = [super init];

if(self != nil) {

self.locationManage = [[[CLLocationManager alloc] init] autorelease];

self.locationManage.delegate = self;

[self performSelector:@selector(stopUpdate) withObject:@"Timed Out" afterDelay:10.0];

}

return self;

}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

{

if([self.delegate conformsToProtocol:@protocol(MapLocationManagerDelegate)]) {

[self.delegate locationUpdate:newLocation];

}

}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{

if([self.delegate conformsToProtocol:@protocol(MapLocationManagerDelegate)]) {

[self.delegate locationError:error];

}

}

-(void)stopUpdate

{

[self.locationManage stopUpdatingLocation];

}

- (void)dealloc {

    [self.locationManage release];

[super dealloc];

}

@end

posted on 2011-08-30 17:56  风乔  阅读(259)  评论(0编辑  收藏  举报

导航