CLLocation iVar释放值,在程序中途变为null

如何解决CLLocation iVar释放值,在程序中途变为null

| 这是我的第一篇文章,但我一直都在阅读该网站。我正在研究一个在多个类之间传递CLLocation *的程序。首先,我的应用程序代理使用CLLocationManager查找当前位置。找到位置后,didUpdatetoLocation:newLocation:fromLocation方法将此位置设置为另一个名为queryPage的类:
//AppDelegate.m
-(void)locationManager:(CLLocationManager *)manager didUpdatetoLocation:(CLLocation *) newLocation fromLocation:(CLLocation *)oldlocation {
     currentLocation = newLocation;
     [queryPage setLocation:currentLocation];
}
在这里,我可以记录位置,一切正常。然后,在queryPage中,setLocation可以接收CLLocation并将其记录下来,没问题。但是,在我的代码后面,诸如button1和button2之类的方法无法访问currentLocation。 button1有时可以记录它,而button2通常记录\“(null)\”。这是QueryPage.h:
//QueryPage.h
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface QueryPage : UIViewController {
     CLLocation *currentLocation;
}
@property (nonatomic,retain) CLLocation *currentLocation;
-(void)setLocation:(CLLocation*)location;
和权威文件
//QueryPage.m
#import QueryPage.h
@implementation QueryPage
@synthesize currentLocation;

...

-(void)setLocation:(CLLocation*)location
{
     self.currentLocation = location;
}

...

-(IBAction)button1:(id)sender
{
     NSLog(@\"button1: %@\",currentLocation);
}

...

-(IBAction)button2:(id)sender
{
     NSLog(@\"button2: %@\",currentLocation);
}
我认为我必须以错误的方式设置/保留currentLocation,但我不知道如何。我已经搜寻了几天以尝试正确处理内存,而这是我所掌握的。我尝试保留currentLocation和其他可以在网上找到的其他内容。我知道IB中的连接良好(每次触摸时都会记录),并且总是在触摸任何按钮之前设置currentLocation(我可以在日志中看到它)。如果外面有人可以帮助我,请告诉我。这看起来与论坛上的其他问题类似,但是到目前为止,我已经尝试了所有建议的方法。谢谢!

解决方法

去除非原子应该有帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?