objective-c - Obj-C 类接口(interface)中的尖括号 "<…>"是做什么用的?

标签 objective-c macos cocoa objc-protocol

谁能告诉我尖括号是什么<...>在一个Objective-C类接口(interface)中做什么?就像这个(来自 http://snipt.net/robhawkes/cocoa-class-interface ):

@interface MapMeViewController : UIViewController <CLLocationManagerDelegate, 
            MKReverseGeocoderDelegate, MKMapViewDelegate, UIAlertViewDelegate> { ... }

在我看来,它们看起来像是某种类型声明(考虑到我以前在 PHP 和 JavaScript 方面的经验),就像我们要确保 MapMeViewController 一样。是 CLLocationManagerDelegate , MKReverseGeocoderDelegate , MKMapViewDelegate , 或 UIAlertViewDelegate

关于 @interface 的文档语法似乎没有提到这一点。

最佳答案

类接口(interface)定义中的尖括号表示您的类所遵循的协议(protocol)。

协议(protocol)几乎就像 Java 或 C# 中的接口(interface),此外 Objective-C 协议(protocol)中的方法可以是可选的。

此外,在 Objective-C 中,您还可以声明变量、参数或实例变量以符合多个协议(protocol)。示例

NSObject<NSCoding, UITableViewDelegate> *myVariable;

在这种情况下,该类必须是 NSObject 或其子类(只有 NSProxy 及其子类会失败),并且它还必须同时符合 NSCodingUITableViewDelegate 协议(protocol)。

在 Java 或 C# 中,这只能通过实际声明所述类来实现。

关于objective-c - Obj-C 类接口(interface)中的尖括号 "<…>"是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1913935/

相关文章:

python - Mac OS X 10.7.3 上的 Pygame 问题

objective-c - 指定图标的路径

cocoa - 如何在 Swift 中从 selectedRowIndexs 中获取一个整数?

ios - 如何减少 didRangeBeacons 方法的时间间隔

objective-c - 将 ImageMagick 库与 OS X 应用程序捆绑在一起?

objective-c - Objective-C - 使用 ASIHTTPRequest 来自 GET 的 HTTP/0.9 响应

macos - 获取包含要执行的管道的 zsh 别名

ios - presentViewController 是否清理父 View ?

Swift 3.1 macos : Cant convert String to URL, 元音编码

objective-c - 将数据传递给委托(delegate)