作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个库,其中包含一个 API,用于根据 GPS 收集的某些值设置当前位置。我想将此位置存储在我的类(class)中,稍后,如果已设置,则更改我的库的行为。
我的想法是:
@interface myLib
{
@property (nonatomic, retain) CLLocationCoordinate2D *location;
}
@implementation myLib
{
@synthesize location = _location;
- (void)setLocation:(CLLocationCoordinate2D *)loc {
location = loc;
}
- (void)someFunc {
if (location != nil) ...
}
}
但是,retain 不是 CLLocationCoordinate2D 对象的有效属性。
那么,保存 CLLocationCoordinate2D 以备后用而不浪费内存的正确方法是什么?
最佳答案
CLLocationCoordinate2D
是非对象类型。它不从 NSObject
继承,所以它不能被 retain
ed。所以像这样声明你的实例变量
CLLocationCoordinate2D location;
属性声明如下:
@property (nonatomic, assign) CLLocationCoordinate2D location;
然后您的 setLocation:
方法就是:
- (void)setLocation:(CLLocationCoordinate2D)newLocation {
location = newLocation;
// other stuff
}
此 setLocation:
方法也是可选的,因为合成属性将为您分配。但是您似乎想在分配新位置时做一些其他事情,所以这应该让您这样做。
关于iphone - 如何在没有内存泄漏的类中存储位置(CLLocationCoordinate2D)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404784/
我是一名优秀的程序员,十分优秀!