私の AppDelegate には、次のプロパティがあります。
GPSTracking* _GPSTracker;
場所の更新を開始する責任があります。シングルトンCLLocationManagerDelegate
を使用し、次のように使用します。
@implementation GPSTracking
-(id) initWithDelegate:(MSpyAppDelegate *) _del
{
if (self = [super init])
{
self.mainDelegate = _del;
[[InternalGPSManager sharedInstance] setMainDelegate: self.mainDelegate];
}
return self;
}
//Start getting locations
- (void)startUpdatingByManager
{
[[InternalGPSManager sharedInstance] startLocationUpdateInSeparateThread];
self.gpsTimer = [NSTimer scheduledTimerWithTimeInterval:(gpsUpdateInterval * 60) target:self selector:@selector(startUpdatingByManager) userInfo:nil repeats:NO]
}
実際のロケーション マネージャー デリゲート:
InternalGPSManager.h:
@interface InternalGPSManager : NSObject <CLLocationManagerDelegate>
{
CLLocationManager *locationManager;
}
@property (nonatomic, retain) CLLocationManager *locationManager;
InternalGPSManager.m
static InternalGPSManager *sharedCLDelegate = nil;
@implementation InternalGPSManager
@synthesize locationManager;
- (id)init
{
self = [super init];
if (self != nil)
{
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
return self;
}
- (void)startLocationUpdateInSeparateThread
{
[NSThread detachNewThreadSelector:@selector(startLocationUpdate) toTarget:self withObject:nil];
}
- (void)startLocationUpdate
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self.locationManager startUpdatingLocation];
[pool release];
}
iOS 4 では動作しますが、iOS 5 では動作しません。ロケーション デリゲート コールバックは呼び出されません。何か案は?