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