2014-10-07 44 views

回答

3

這意味着它是一個符合指定協議的通用對象指針。

因此:

@protocol SomeProtocol <NSObject> 
- (void)someMethod:(int)a; 
@end 

@interface SomeClass : NSObject <SomeProtocol> 

@end 

將允許:

SomeClass *obj = [SomeClass new]; 

// call method via the protocol interface 
id<SomeProtocol> iface = obj; 
[iface someMethod:1]; 
2

這是一個類定義(@interface)或類型定義一個變量的一部分。它是告訴編譯器類/類型實現協議的一種方式。類實現的協議的名稱位於用逗號分隔的三角括號內。

你的情況:

id <protocolName> object; 

您聲明瞭一個名爲id實現該協議protocolName類型的object可變器。

協議是一個方法的集合。因此,它允許您發送由protocolName定義的消息到object,而不會發出編譯器發出警告。

Apple docs here

相關問題