博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类别和协议
阅读量:5032 次
发布时间:2019-06-12

本文共 497 字,大约阅读时间需要 1 分钟。

类别是另一种为现有类添加新行为的方法。不同于子类,类别实际上是oc的一种动态行为,它利用了运行时分配机制。因此,类别甚至不需要拥有原类的源代码。此外,类别不能向现有的类中添加实例变量。

类别有很多好处,比如把类的实现分散到多个implementation文件里,或者用于创建非正式协议;

类别也有一些限制,在类别的使用中一定要注意两点:

类别仅仅是一堆方法的集合,你无法为类添加实例变量。

类别不能解决命名冲突,如果类别中的方法与类原有的方法重名,则类中的方法被覆盖。

 

oc中的协议等同于java接口的概念,协议看起来就像类别的生命,还是一堆方法声明的集合。

正式协议的意思是,每个采用这份协议的类必须实现这份协议中的所有方法,这种说法一直持续到oc2.0,从oc2.0开始,协议中的方法可以有选择的由类实现。对于必须实现的方法,用关键字@required修饰,对于可选择性实现的方法,使用@optional关键字修饰。

非正式协议不需要采用@protocol关键字声明,但需要创建一个类别。

转载于:https://www.cnblogs.com/lmg4819/p/4861644.html

你可能感兴趣的文章
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
函数式编程与参数
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
【AHOI2013复仇】从一道题来看DFS及其优化的一般步骤和数组分层问题【转】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
[Qt] this application failed to start because it could not find or load the Qt platform plugin
查看>>
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
文件操作
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>
Android中获取应用程序(包)的大小-----PackageManager的使用(二)
查看>>
Codeforces Gym 100513M M. Variable Shadowing 暴力
查看>>