2011-03-26 19 views
1

假設我有一個創建對象的後臺線程。這個對象最終將需要更新用戶界面,所以它必須使其到主線程。在一個線程上分配一個對象並在另一個線程上釋放它似乎很尷尬。這是常見的,還是有更好的模式?考慮:在線程間傳遞對象所有權?

// 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]; 
} 

由於

回答

2

the documentation

這種方法保留了接收機和arg參數進行選擇之後,直至。

這樣你就可以進行呼叫後workerDoStuff釋放obj,因爲它會保留你,直到updateUI:回報。