gpt4 book ai didi

iphone - 在 iphone sdk 中使用后退按钮时位置跟踪停止

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:09:11 26 4
gpt4 key购买 nike

我有一个 UISwitch,它用于使用 navigation controller 在后台服务中跟踪位置。如果我打开我的应用程序,它运行良好,但当我打开按钮并移回主窗口时,位置跟踪停止。

我使用了下面的代码,

-(IBAction)startTracking:(id)sender{
if(startTrackingButton.on){
[locationManager startUpdatingLocation];}
else{
[locationManager stopUpdatingLocation];
}}

- (void)viewDidLoad{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];}

有什么建议吗?

最佳答案

发生这种情况是因为当您返回导航堆栈时,您的 locationManager(以及您的 UISwitch 和 UIViewController)对象正在被释放。

要确认这一点,请使用开关将此方法添加到您的 viewController。

- (void) dealloc 
{

NSLog(@"Object being destroyed");
}

如果当您返回“主视图”时打印出“Object being destroyed”,那么您就知道问题出在哪里了。

要解决此问题,请将带有开关的 UIViewController 设为主 UIViewController 的属性,这样该对象将在应用程序的生命周期内创建一次,您可以根据需要弹出和推送它。

你还应该将你的 pushViewController 代码包装成这样,创建一个属性来存储你的 switchViewController 伪代码:

if(self.switchViewController)
{
NSLog(@"switchViewController Already Created");
[navigationController pushViewController:self.switchViewController];
}
else
{
self.switchViewController = [[UIViewController alloc] init];
[navigationController pushViewController:switchViewController];
}

如果您不检查 switchViewController 属性是否已实例化,您最终将每次都创建一个新实例。

约翰

关于iphone - 在 iphone sdk 中使用后退按钮时位置跟踪停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250257/

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