2015-09-26 87 views
0

我有一個NSArray對象,我想對每個對象執行選擇器pinInBackgroundWithName:(NSString *)。我知道我可以使用[arr makeObjectsPerformSelector:@selector(selector_name) withObject:obj];但是如何將字符串傳遞給withObject:參數工作?例如,如果我想在數組中的對象上執行的選擇器有多個參數呢?那麼請問withObject:的參數我們是一個NSArray的對象?將makeObjectsPerformSelector與對象一起使用

回答

1

從文檔:

標識發送到數組中的對象的信息的選擇器。該方法必須採取類型的單個參數id

因此,您不能將此用於具有多個參數的選擇器。

如果要發送帶有多個參數的消息給數組中的每個對象,可以使用自己的版本來獲取數組,然後填充一個NSInvocation對象,然後在每個對象上調用它,或者if你想變得很花哨,使用更高階的消息。

0

我會建議開溝選擇器爲基礎的調用和使用enumerateObjectsUsingBlock或它的變體之一。

塊繼承它們的封閉範圍,因此您可以調用一塊代碼塊,該塊代碼根據調用範圍使用盡可能多的變量。

相關問題