2011-11-21 63 views
0

,如果我有一個功能如何將多個參數傳遞給線程?

-(void)setName:(NSString *)name setAddress:(NSString *)address 
{ 

} 

我怎麼能叫上述功能

[self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>]; 
+0

傳遞一個指向包含你想給線程的參數的結構實例的指針。 – Polynomial

+0

爲什麼你想將結構作爲參數傳遞給線程,而不是使用類成員來處理線程? – AlexTheo

回答

4

使用的NSDictionary作爲參數,你必須定義函數接受字典

[self performSelector:@selector(yourSelector:) withObject:theDictionary afterDelay:<#(NSTimeInterval)#>]; 

然後你就可以在詞典

獲取相應的數據賦值
2

你應該使用的NSArray對象。在NSArray對象中添加參數並傳遞該對象。

+1

使用NSArray是一個壞主意,因爲您必須知道參數的排序。最好使用NSDictionary(如Hanon所建議的),實際上這是Apple框架如何操作,UserInfo在通知等方面。 –

+0

@SimonLee我同意你的意見。 –

2

嘗試將對象包裝到另一個自定義對象/ NSArray/NSDictionary中。事情是這樣的:

NSArray *arrayObjects = [NSArray arrayWithObjects:name, address, nil]; 
[self performSelector:@selector(sel:) withObject:arrayObjects afterDelay:delay];