Это прежде всего любопытство, я не совсем уверен, что практическое использование этого, но здесь идет.
Так как блоки также являются объектами Objective-C, можно ли проверить их тип? То есть отвечает ли оно на сообщение isKindOfClass:
и как использовать это сообщение в отношении блоков?
Моя наивная мысль, что это, вероятно, так:
-(void) aMethod {
typedef int (^BlockA)(int x, int y);
id blockVar = ...; // get a block from somewhere
if([blockVar isKindOfClass:BlockA]) {
BlockA blockVarA = blockVar;
int result = blockVarA(1,2);
}
}
Возможно, код выше не работает. Но если можно проверить тип блока, каков правильный способ сделать это?