Передача права собственности на объект между потоками? - PullRequest
1 голос
/ 27 марта 2011

Предположим, у меня есть фоновый поток, который создает объект. Этот объект в конечном итоге понадобится для обновления пользовательского интерфейса, поэтому он должен перейти в основной поток. Кажется неудобным размещать объект в одном потоке и освобождать его в другом потоке. Это часто встречается, или есть лучший образец? Рассмотрим:

// Called on a background thread
-(void)workerDoStuff
{
    MyObject *obj = [[MyObject alloc] init];
    [self performSelectorOnMainThread:@selector(updateUI:) withObject:obj];
}

// Performed on main thread
- (void)updateUI:(MyObject *)obj
{
    // Do stuff with obj
    [obj release];
}

Спасибо

1 Ответ

2 голосов
/ 27 марта 2011

С документация :

Этот метод сохраняет приемник и параметр arg до тех пор, пока не будет выполнен селектор.

Таким образом, вы можете отпустить obj через workerDoStuff после совершения вызова, так как он будет сохраняться до тех пор, пока updateUI: не вернется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...