我有NSArray
个对象,我想在每个对象上执行选择器pinInBackgroundWithName:(NSString *)
。我知道我可以使用[arr makeObjectsPerformSelector:@selector(selector_name) withObject:obj];
但是如何将字符串传递给withObject:
参数呢?例如,如果我想对数组中的对象执行的选择器有多个参数,该怎么办?那么withObject:
参数我们是NSArray
个对象吗?
答案 0 :(得分:1)
来自文档:
一个选择器,用于标识要发送到阵列中对象的消息。该方法必须采用
类型的单个参数id
所以你不能将它用于具有多个参数的选择器。
如果要向数组中的每个对象发送带有多个参数的消息,则可以滚动自己的带有数组的版本,然后填写它随后在每个对象上调用的NSInvocation
对象,或者,如果您想要真正喜欢,请使用更高阶的消息。
答案 1 :(得分:0)
我建议放弃基于选择器的调用并使用enumerateObjectsUsingBlock
或其中一个变体。
Blocks继承它们的封闭范围,因此您可以调用一个代码块,该代码块在调用范围内使用尽可能多的变量。