[英]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.