簡體   English   中英

使用CLLocationCoordinate2D時發生內存泄漏

[英]Memory leak when using CLLocationCoordinate2D

我正在使用NSMutableArray來保存CLLocationCoordinate2D值。 經過幾分鍾的測試,我發現該應用程序崩潰了。 我發現與數組和CLLocationCoordinate2D值都相關的大量內存泄漏。

這是代碼:

NSMutableArray *arrayReturn = [[NSMutableArray alloc] init];
CLLocationCoordinate2D obj1 = CLLocationCoordinate2DMake(37.6085289,107.5941445);
CLLocationCoordinate2D obj2 = CLLocationCoordinate2DMake(27.1727738,78.041655);

[arrayReturn addObject:[NSValue valueWithBytes:&obj1  objCType:@encode(CLLocationCoordinate2D)]];
[arrayReturn addObject:[NSValue valueWithBytes:&obj2 objCType:@encode(CLLocationCoordinate2D)]];

return [arrayReturn autorelease];

我正在創建像這樣的幾個對象,並將其添加到數組中。 即使我在結尾處標記了自動釋放,但陣列中仍有大量內存泄漏。

我在這里做錯了什么?

CLLocationCoordinate2D是2個雙精度值的簡單結構,而不是NSObject!

您在堆棧上分配CLLocationCoordinate2D並在NSValue對象中傳遞指向該數據的指針。 但是方法返回后,堆棧存儲器將不可用。 這就是為什么您的應用程序崩潰的原因。

您需要以某種方式將CLLocationCoordinate2D轉換為NSObjects。 例如這樣:

NSArray* coords = [NSArray arrayWithObjects:[NSNumber numberWithDouble:obj1.latitude], [NSNumber numberWithDouble:obj1.longitude], nil];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM