gpt4 book ai didi

iphone - 如何在没有内存泄漏的类中存储位置(CLLocationCoordinate2D)?

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:22 25 4
gpt4 key购买 nike

我正在创建一个库,其中包含一个 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 继承,所以它不能被 retained。所以像这样声明你的实例变量

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/

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