как освободить NSMutableDictionary

Я вызываю createTableData из viewDidLoad. Чего я не понимаю, так это того, что я делаю выделение для NSMutableDictionary, но я не понимаю, почему этот объект не освобождается из памяти, несмотря на выпуск. Я вижу утечки памяти, и кажется, что утечки указывают на этот раздел кода. Может ли кто-нибудь указать мне URL-адрес, по которому я мог бы прочитать / понять, что я должен делать по сравнению с тем, что я делаю? Я просто не могу понять, где я ошибся.

- (void)createTableData {
 NSMutableArray *toolList;
 toolList=[[NSMutableArray alloc] init];
 [toolList addObject:[[NSMutableDictionary alloc]
     initWithObjectsAndKeys:@"Some title",@"name",
          @"1",@"whatViewController",
          @"",@"url",
          @"some_icon.jpg",@"picture",
          @"some detail text",@"detailText",nil]];
 toolData=[[NSMutableArray alloc] initWithObjects:toolList,nil];
 [toolList release];
}

- (void)dealloc {
    [toolData release];
    [super dealloc];
}

person uncivilized    schedule 09.11.2010    source источник


Ответы (1)


 [toolList addObject:[[NSMutableDictionary alloc]
     initWithObjectsAndKeys:@"Some title",@"name",
          @"1",@"whatViewController",
          @"",@"url",
          @"some_icon.jpg",@"picture",
          @"some detail text",@"detailText",nil]];

В этой строке вы добавляете объект NSMutableDictionary в массив и не выпускаете его. Правильный код будет (используя метод класса, который уже возвращает автоматически выпущенный объект):

 [toolList addObject:[NSMutableDictionary 
     dictionaryWithObjectsAndKeys:@"Some title",@"name",
          @"1",@"whatViewController",
          @"",@"url",
          @"some_icon.jpg",@"picture",
          @"some detail text",@"detailText",nil]];

или явно автоматически выпустить ваш временный словарь:

[toolList addObject:[[[NSMutableDictionary alloc]
     initWithObjectsAndKeys:@"Some title",@"name",
          @"1",@"whatViewController",
          @"",@"url",
          @"some_icon.jpg",@"picture",
          @"some detail text",@"detailText",nil] autorelease]];
person Vladimir    schedule 09.11.2010
comment
Я также нашел эту статью, которая в основном объясняет, что вы предоставили: memo.tv/memory_management_with_objective_c_cocoa_iphone - person uncivilized; 09.11.2010