CLLocation 管理器中断
Posted
技术标签:
【中文标题】CLLocation 管理器中断【英文标题】:CLLocation Manager breaks 【发布时间】:2012-08-12 05:48:17 【问题描述】:没有错误——编译时或运行时抛出的异常......构建良好。我做错了内存管理吗?为所有文件启用 ARC。
viewcontroller.h:
#import <UIKit/UIKit.h>
@interface workViewController : UIViewController
<CLLocationManagerDelegate>
CLLocationManager *locationManager;
@property (strong, nonatomic) IBOutlet CLLocationManager *locationManager;
@end
viewcontroller.m:
#import "workViewController.h"
@interface workViewController ()
@end
@implementation workViewController
@synthesize locationManager;
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
NSLog(@"i worked lol");
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the
//view, typically from a nib.
locationManager.delegate = self;
[locationManager startUpdatingLocation];
- (void)viewDidUnload
[locationManager stopUpdatingLocation];
[self setLocationManager:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
@end
前缀.pch:
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in ios SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#endif
无论如何,这段代码在我第一次构建应用程序时工作过一次。我一直在为此苦苦挣扎,主要是它有时会工作,有时在我重新启动计算机之前根本无法工作。我在做内存管理完全错了吗?
这让我感到困惑,因为我确保我逐行遵循教程......
应用程序在调用委托方法的地方中断:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
它只是说 thread1 断点...我不确定如何读取调试器(它只是提供了一些我不知道如何处理的十六进制...)
无论如何,我很想知道我做错了什么!
【问题讨论】:
【参考方案1】:尝试初始化您的 CLLocationManager 对象。一般来说,你选择这样做的方式很奇怪。通常使用 Core Location,您将创建一个实现 didUpdateToLocation 和 didFailWithError 的对象,创建一个委托协议,并在您需要该位置的主线程中初始化该对象,然后调用 startUpdatingLocation。
【讨论】:
以上是关于CLLocation 管理器中断的主要内容,如果未能解决你的问题,请参考以下文章
如果 App 在后台时调用 startUpdatingLocation,CLLocation 管理器不会更新位置 [重复]
Apple 的 CLLocation 管理器的外部 NMEA GPS