MemoryLeak в программировании iphone? - PullRequest
0 голосов
/ 01 октября 2011

Может ли кто-нибудь помочь мне понять проблему на этом изображении

enter image description here

Ответы [ 3 ]

4 голосов
/ 01 октября 2011

Как говорит анализатор, вы выделяете locs в строке 647 , используя
NSMutableArray *locs = [[NSMutableArray alloc] init]; и не освобождая его позже в блоке.Вы должны освободить его, или вы можете использовать удобный конструктор для получения автоматически выпущенного массива, как это, NSMutableArray *locs = [NSMutableArray array];

Я бы посоветовал вам все еще упростить свой код до этого,

NSMutableArray *annotations = (NSMutableArray *)[map annotations];
[annotations removeObject:[map userLocation]];
[map removeAnnotations:annotations];
1 голос
/ 01 октября 2011

Вам нужно освободить locs в самом конце.Вы распределили и инициализировали его, указав для него счетчик ссылок, равный 1, а затем вы должны освободить его, чтобы изменить счетчик ссылок на 0. Для получения дополнительной информации см. http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MemoryMgmt/.

0 голосов
/ 01 октября 2011

Вы инициализировали массив locs, затем вы должны освободить этот массив перед закрытием этой функции: [locs release];locs=nil;

...