Словарь будет не быть добавлен другим autorelease пула потоков «s, если вы явно не вызовете [dictionary autorelease]
на эту тему.
Возможно, это оригинальный пул автореферата ниток, который освобождает объект. Когда вы создаете экземпляр NSDictionary
с использованием литерала, он автореализован (+[NSDictionarydictionaryWithObjects:forKeys:count:]
is called under the hood).
old NSObject documentation я нашел говорит (о performSelector:onThread:withObject:waitUntilDone:
)
Этот метод сохраняет приемник и параметр ARG, пока выполняется селектор
Таким образом, вы должны более-релиз словарь где-то.
Я бы использовал Grand Central Dispatch вместо performSelector
методов. Блоки неявно сохраняют переменные, которые они захватывают, поэтому в большинстве случаев вам не нужно беспокоиться об управлении памятью:
NSDictionary *dictionary = @{@"foo" : @"bar"};
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//do something with the dictionary
[dictionary description];
//if needed, do something on main thread once the background work is finished
dispatch_sync(dispatch_get_main_queue(), ^{
//...
});
});