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

卡在 CLLocation

CLLocation Manager 有时会给出不正确的位置

CLLocation 如何将数据解析到我的应用程序标签中

iPhone模拟器位置错误