executeSelector с несколькими параметрами - PullRequest
2 голосов
/ 02 февраля 2012

Я хочу выполнить метод, который имеет несколько аргументов.Есть ли простой способ пропустить несколько из них одновременно?Что-то вроде

[self performSelector:@selector(methodName) withObject:firstParameter withObject:secondParameter afterDelay:0.1];

Я нашел способ здесь SEL executeSelector и аргументы , но это кажется немного сложным, и я думаю, что должен быть какой-то более простой способ сделать это.Но, вероятно, мне это так кажется, потому что я новичок в Цели C:)

Я буду очень признателен за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012
  1. Оберните ваши параметры в NSDictionary и отправьте этот словарь как параметр.
  2. Создайте пользовательский класс и включите все ваши параметры в этот класс в качестве свойств.Отправьте этот вновь созданный объект как параметр.
2 голосов
/ 13 мая 2012

Или другое решение:

#import <objc/runtime.h>
...
objc_msgSend(self, sel_getUid("methodwithFirstParam:secondParam:thirdParam:"), @"foo", "bar", 42 );

В отличие от performSelector:, метод objc_msgSend может принимать множество параметров с различными типами, такими как NSObject (и дочерние классы) или BOOL, int, char* и т. Д.

...