Sam*_*lan 58

来自官方文档

正式和非正式协议

协议有两种,正式和非正式:

  • 一个非正式协议是NSObject的,这隐含地使得几乎所有对象的协议的采用一个类别.(类别是一种语言功能,使您可以在不对其进行子类化的情况下向类添加方法.)在非正式协议中实现方法是可选的.在调用方法之前,调用对象检查目标对象是否实现它.在Objective-C 2.0中引入可选协议方法之前,非正式协议对于Foundation和AppKit类实现委派的方式至关重要.

  • 一个正式的协议声明的客户端类有望实现方法的列表.正式协议有自己的声明,采用和类型检查语法.您可以使用@required和@optional关键字指定其实现是必需的或可选的方法.子类继承其祖先采用的正式协议.正式协议也可以采用其他协议.

形式协议是Objective-C语言的扩展.

  • 与谷歌相比,苹果的文件很糟糕. (7认同)

Raj*_*071 15

非正式协议 :( Category实施是可选的)

正式协议 :( Extension实施是可选的和必需的)

  • 最简单的描述差异的方式. (2认同)