将makeObjectsPerformSelector与对象一起使用

时间:2015-09-26 19:38:46

标签: ios objective-c

我有NSArray个对象,我想在每个对象上执行选择器pinInBackgroundWithName:(NSString *)。我知道我可以使用[arr makeObjectsPerformSelector:@selector(selector_name) withObject:obj];但是如何将字符串传递给withObject:参数呢?例如,如果我想对数组中的对象执行的选择器有多个参数,该怎么办?那么withObject:参数我们是NSArray个对象吗?

2 个答案:

答案 0 :(得分:1)

来自文档:

  

一个选择器,用于标识要发送到阵列中对象的消息。该方法必须采用id

类型的单个参数

所以你不能将它用于具有多个参数的选择器。

如果要向数组中的每个对象发送带有多个参数的消息,则可以滚动自己的带有数组的版本,然后填写它随后在每个对象上调用的NSInvocation对象,或者,如果您想要真正喜欢,请使用更高阶的消息。

答案 1 :(得分:0)

我建议放弃基于选择器的调用并使用enumerateObjectsUsingBlock或其中一个变体。

Blocks继承它们的封闭范围,因此您可以调用一个代码块,该代码块在调用范围内使用尽可能多的变量。