Почему я получаю ошибку компиляции, когда я возвращаю указатель на протокол? - PullRequest
1 голос
/ 12 августа 2010
@protocol Runnable

- (id<Runnable>) works; //this compiles fine

- (Runnable *) broke; // get a compile error saying Expected ')' before 'Runnable'

@end

Я не уверен, что понимаю, почему xCode жалуется на строку - (Runnable *) broke;

1 Ответ

5 голосов
/ 12 августа 2010

Протоколы в Obj-C синтаксически не похожи, скажем, на «интерфейсы» в Java, где синтаксис для указателей на интерфейсы и указателей на подклассы, по существу, одинаков.

то, как вы говорите «объект, который соответствует Runnable. id является ссылкой на любой тип объекта, а нотация < > выражает явное соответствие данному протоколудля проверки типа.

Если вы говорите Foo *, вы имеете в виду объект типа Foo или одного из его подклассов.

Это просто таксинтаксис Obj-C для этого. С этим синтаксисом семантика похожа на то, что вы получите, например, на Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...