Я хочу написать что-то вроде этого:
- (int)someMethod:(SEL)theSelector {
NSObjet *i = func(...);
i = theSelector(i); //replace this
i = func2(...);
return i;
}
Итак, у меня есть некоторые постоянные функции, которые я знаю и могу просто написать. У меня также есть неопределенная функция, которую я должен передать как параметр.
Я не могу использовать такие конструкции, как performSelector:
, потому что они даже выполняются в другом цикле NSRunLoop.
И я не могу передавать блоки этой функции из-за специфического кода.
Как решить эту проблему? Кажется, objc_msgSend
может помочь, но я не знаю, как правильно его использовать.
performSelector:
эквивалентен прямому вызову метода, но полезен в таких случаях, как ваш, когда вы заранее не знаете точный селектор. Он не откладывает вызов до следующей итерации цикла выполнения. Если бы это было так, он не смог бы вернуть значение, поскольку оно было бы неопределенным. - person Steve Madsen   schedule 22.08.2014performSelector:
не является эквивалентом прямого вызова, потому что он не возвращает результат перед следующей строкой кода. ИлиperformSelector:
отличается отperformSelector:...afterDelay:
? - person Gargo   schedule 22.08.2014