int someFunction (CLLocation *currentLocation) {
double latitude = 12.3f;
double longitude = 22.5f;
CLLocationDistance d1 = [currentLocation distanceFromLocation:
[[CLLocation alloc] initWithLatitude:latitude longitude:longitude]];
return 0;
}
0
A
回答
1
是的。 Objective-C的内存管理,可以看起来很复杂,但记住一个基本的规则将带你:
如果使用名称以“黄金”或“新”的方法或创建你需要一个对象的所有权包含“复制”(例如,alloc,newObject或mutableCopy),或者如果您发送一个保留消息。您有责任放弃使用发行版或自动发行版所拥有的对象的所有权。任何其他时间你收到一个对象,你不能释放它。
你叫alloc
没有release
或autorelease
,所以你打破了规则。
3
是的。您正在分配第二个CLLocation
以传递给distanceFromLocation
而不是释放它。
你可以做,而不是:
CLLocationDistance d1 = [currentLocation distanceFromLocation:
[[[CLLocation alloc] initWithLatitude:latitude longitude:longitude] autorelease]];
(或各种其他的事情见docs,如@whisty的意见建议。)
(此外,它似乎有点毫无意义,使呼叫并将其值分配给d1
,然后将其丢弃。)
+0
你也许应该阅读关于内存管理的苹果文档 - http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/ 20000994-BAJHFBGH – 2010-06-28 22:54:19
2
是的。你分配一个CLLocation对象,但从不释放它。我强烈建议您通读。
相关问题
- 1. 这是内存泄漏吗?
- 2. 这是内存泄漏吗?
- 3. 这是内存泄漏吗?
- 4. 这是内存泄漏吗?
- 5. 这是Solr中的内存泄漏吗?
- 6. 这是可能的内存泄漏吗?
- 7. 修复Cocoa/ObjC中的内存泄漏
- 8. Android - 这是内存泄漏吗?
- 9. PushViewController:这是内存泄漏吗?
- 10. 是内存泄漏吗?
- 11. IronPython:这会泄漏内存吗?
- 12. 这会造成内存泄漏吗?
- 13. 这会造成内存泄漏吗?
- 14. 这是导致内存泄漏的iPhone
- 15. 这是Sharepoint Workflow应用程序中的内存泄漏吗?
- 16. 这是Linux Mono应用程序中的内存泄漏吗?
- 17. 它是Image的内存泄漏吗?
- 18. 这是否会导致内存泄漏?
- 19. 这是在MFC内存泄漏
- 20. 这是否会导致内存泄漏?
- 21. 这是否会导致内存泄漏?
- 22. 这是否会造成内存泄漏?
- 23. 无线事件是内存泄漏吗?
- 24. 这是内存泄漏吗? - 上下文是Android上下文
- 25. “分析器图”中的“非托管内存”。这是内存泄漏指示吗?
- 26. NSMutableString的这种用法是内存泄漏吗?
- 27. Android回调 - 这是潜在的内存泄漏吗?
- 28. 这是内存泄漏吗?内核资源泄露? (C++,并行工作室)
- 29. 这是单向绑定泄漏内存吗?
- 30. 这是内存泄漏吗? Winforms隐藏和显示表单
谢谢。 @“Fsfsdfsd”常量的处理方式不同吗? – Jarsj 2010-06-28 23:24:13
您不必担心字符串常量。你不会“分配”它们 - 它们总是在那里,无论它们被保留或释放了多少次。 (但是,对于使用任何'NSString'变量来做正确的事情仍然是一个好主意,以防将来有一天你把某些东西放在那里不是一个常量。) – 2010-06-29 00:14:59