gpt4 book ai didi

iphone - CLLocationManager 从不调用委托(delegate)方法

转载 作者:可可西里 更新时间:2023-11-01 03:35:28 26 4
gpt4 key购买 nike

<分区>

您好,我在 iPhone 上玩弄位置,从一开始我就遇到了问题。我已经定位了我的问题并确定是 CLLocationManager 困扰着我。

所以我开发了非常简单的应用程序。我只有一个带有 CLLocationManager 的 View Controller 。在 View 加载时,我初始化了 CLLocationManager 并开始更新。我还实现了两种方法 didFailWithErrordidUpdateToLocation

我已经阅读了很多问题,我所学到的就是这些。您必须在初始化期间保留 CLLocationManager。此外,在卸载 view 期间将 CLLocationManagers delegate 设置为 nil 是明智的(与传递给的消息有关) CLLocationManager 因为框架保留了它并且它永远不会正确发布)

总而言之,我找不到关于该做什么以及如何让它发挥作用的合理解释。

这是我的代码,如果有人能弄明白,我将不胜感激。viewControllers头文件

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface CoreLocationViewController : UIViewController <CLLocationManagerDelegate>
{
CLLocationManager *locManager;
}

@property (nonatomic, retain) CLLocationManager *locManager;

@end

viewController.m 文件

#import "CoreLocationViewController.h"


@implementation CoreLocationViewController
@synthesize locManager;

- (void)viewDidLoad
{
[super viewDidLoad];

self.locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
[self.locManager startUpdatingLocation];

self.view.backgroundColor = [UIColor grayColor];
}

#pragma mark -
#pragma mark Location Delegate

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"in fail with error");
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"in update to location");
}


#pragma mark -
#pragma mark Memory Management

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}

- (void)viewDidUnload
{
self.locManager.delegate = nil;
[super viewDidUnload];
}


- (void)dealloc
{
[locManager release];
[super dealloc];
}


@end

顺便说一句:我使用的是 iOS 4.2。我指出这一点是因为我读到 Apple 在 iOS 4 中更改了位置委托(delegate)

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com