iPhone SDK @selector -> SEL @protocol ->? - PullRequest
       17

iPhone SDK @selector -> SEL @protocol ->?

1 голос
/ 03 сентября 2010

хорошо, поэтому я хочу сделать публичную функцию, которая будет возвращать YES, если объект существует, соответствует протоколу и отвечает на селектор. Я знаю, что typedef @selector - это SEL, но что такое typedef для @ protocol

BOOL conforms(id object, ? prototype, SEL action) {
  return (object != nil && 
         [object conformsToProtocol:prototype] && 
         [object respondsToSelector:action]);
}

И я хочу иметь возможность вызывать эту функцию как:

if(conforms(delegate, @protocol(UIScrollViewDelegate), 
   @selector(touchesBegan:withEvent:))) {
  [delegate touchesBegan:touches withEvent:event];
}

1 Ответ

4 голосов
/ 03 сентября 2010

Вы ищете объект Protocol:

BOOL conforms(id object, Protocol *protocol, SEL action) {
  return (object != nil && 
         [object conformsToProtocol:protocol] && 
         [object respondsToSelector:action]);
}
...