Objective-C. Можете ли вы использовать протокол как интерфейс Java?

23
задан Michael Myers 18 June 2009 в 17:19
поделиться

2 ответа

Ответ Питерса великолепен. Но я бы хотел добавить одну вещь. Если вы добавите протокол «NSObject» к своему протоколу

@protocol CoolProtocol <NSObject>
@end

, это избавит вас от необходимости объявлять протокол NSObject в объявлении метода.

- (void) someMethod: (id <NSObject, CoolProtocol>) obj { }

Теперь становится

 - (void) someMethod: (id <CoolProtocol>) obj { }
14
ответ дан 29 November 2019 в 01:38
поделиться

Закрыть. В Objective C вы указываете, что объект реализует протокол с помощью угловых скобок <>, поэтому вы должны написать свой метод как один из следующих:

- (void) someMethod: (id <CoolProtocol>) obj { }
- (void) someMethod: (id <NSObject, CoolProtocol>) obj { }
- (void) someMethod: (NSObject <CoolProtocol> *) obj { }

Во всех случаях вы говорите, что someMethod требует объект, реализующий CoolProtocol.

] id - это общий указатель на любой объект Objective C.

Итак, id означает "

35
ответ дан 29 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: