首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在NSMutableArray中存储CLLocationCoordinates2D

在NSMutableArray中存储CLLocationCoordinates2D
EN

Stack Overflow用户
提问于 2010-04-05 15:54:41
回答 2查看 11.6K关注 0票数 15

经过一番搜索,我得到了以下解决方案:reference

代码语言:javascript
复制
CLLocationCoordinate2D* new_coordinate = malloc(sizeof(CLLocationCoordinate2D));
new_coordinate->latitude = latitude;
new_coordinate->longitude = longitude;
[points addObject:[NSData dataWithBytes:(void *)new_coordinate
length:sizeof(CLLocationCoordinate2D)]];
free(new_coordinate);

并通过以下方式访问它:

代码语言:javascript
复制
CLLocationCoordinate2D* c = (CLLocationCoordinate2D*) [[points objectAtIndex:0] bytes];

然而,有人声称这里存在内存泄漏?有没有人能建议我哪里有漏洞,以及如何修复它。此外,有没有更好的方法在NSMutableArray中存储CLLocationCoordinate2D列表?请给出示例代码,因为我是一个目标C新手。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-05 16:05:13

没有泄漏,只是浪费了堆内存。

你可以直接使用

代码语言:javascript
复制
CLLocationCoordinate2D new_coordinate;
new_coordinate.latitude = latitude;
new_coordinate.longitude = longitude;
[points addObject:[NSData dataWithBytes:&new_coordinate length:sizeof(new_coordinate)]];
票数 6
EN

Stack Overflow用户

发布于 2010-04-05 17:16:49

这是另一种方法,使用内置类型NSValue,它就是为此目的而设计的:

代码语言:javascript
复制
CLLocationCoordinate2D new_coordinate = { latitude, longitude };
[points addObject:[NSValue valueWithBytes:&new_coordinate objCType:@encode(CLLocationCoordinate2D)]];

要检索值,请使用以下代码:

代码语言:javascript
复制
CLLocationCoordinate2D old_coordinate;
[[points objectAtIndex:0] getValue:&old_coordinate];
票数 70
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2577428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档