Моя основная программа порождает поток, который выполняет следующее:
// alloc autorelease pool somewhere before
NSArray *blah = [NSArray arrayWithObject: @"moo"];
[self performSelectorOnMainThread: @selector(boonk:) withObject: blah
waitUntilDone: NO];
// release autorelease pool somewhere after
Теперь это мне кажется ошибочным, потому что пул автоматического выпуска может быть освобожден до того, как завершится выполнение селектора boonk: что приведет ксбой.
Итак, мой следующий естественный ход будет:
// alloc autorelease pool somewhere before
NSArray *blah = [[NSArray alloc] initWithObject: @"moo"];
[self performSelectorOnMainThread: @selector(boonk:) withObject: blah
waitUntilDone: NO];
// release autorelease pool somewhere after
- (void)boonk: (id)data
{
// do something with data
[data release]; // release the ref count the thread added
}
Это определенно без ошибок, но .... кажется неестественным.Существует ли соглашение или протокол подсчёта объективных значений c для обработки этой ситуации (межпотоковая публикация без ожидания) или второе решение выше способа, которым это делается?