iOS开发笔记iOS 日记本

iOS 非正式协议

2021-06-15  本文已影响0人  long弟弟

很多博客文章写到非正式协议就是类别,也对也不对?看完之后还是会犯迷糊。

下图拍自《圣经》

非正式协议.png

我们可以将一组方法声明为NSObject的分类,这称为非正式协议,或者称为简化协议。。。

非正式协议只是作为分类进行声明,而没有实现。实际上,分类中声明的方法即使没有实现,也可以编译执行,但是在发送消息时会出现运行时错误。

补充

类别

类别category,也叫分类范畴。是OC中的一个灵活的类扩展机制,用于在不获悉、不改变原来代码的情况下往一个已经存在的类中添加方法。不能添加实例变量(成员变量);添加的属性,也不会自动生成实例变量。

协议

非正式协议是被声明为NSObject类的分类。非正式协议中声明的方法不一定要实现,编译时不能检查类对非正式协议的适用性,运行时不能检查类对非正式协议的适用性。只能确认是否实现了每个方法。

正式协议是以@protocol方式命名的方法列表,与非正式协议相比不同的是,它要求显示的采用协议。@required修饰的方法在遵守相应协议的类中是必须被实现的,不然编译器会告警;@optional修饰的方法在遵守相应协议的类中是否实现是可选的

上一篇下一篇

猜你喜欢

热点阅读