【发布时间】:2012-03-02 06:09:23
【问题描述】:
我编写了一个作为守护进程启动的小应用程序。它基本上只会输出手机的 GPS 位置。
main.m:
int main(int argc, char *argv[]) {
NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];
LocationController *obj = [[LocationController alloc] init];
[obj getLocation];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop run];
[p drain];
return 0;
}
LocationController.m
@implementation LocationController
@synthesize locationManager;
-(id)init {
self = [super init];
if(self) {
trackingGPS = false;
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
}
return self;
}
-(void)getLocation {
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"NEW LOCATION :: %@", newLocation);
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"LOCATION ERROR : %@", error);
}
-(void) dealloc {
[locationManager release];
[super dealloc];
}
@end
因此,如果我从跳板手动运行应用程序,它可以正常工作并记录 GPS 位置...至少 15-20 秒...然后跳板终止应用程序,因为它不响应 - 预期的行为。
如果我在启动时启动应用程序 (launchDaemon),它也可以正常启动,但委托函数 'didUpdateToLocation' 永远不会被调用!!
我使用的是 iOS 5,所以不确定问题出在哪里。 任何帮助都非常感谢。
谢谢!!
【问题讨论】:
标签: ios location cllocationmanager jailbreak launch-daemon