category、block、protocol、SEL
来源:互联网 发布:asmr软件 编辑:程序博客网 时间:2024/06/06 09:43
category、block、protocol、SEL
category
作用:扩充一个类的功能
命名规范: 类名+分类名
优点:降低类间的耦合性(继承拥有高耦合性)
在分类中:
1.可以通过self使用主类中的其它方法。
2.只要在原类中声明的实例变量,都可以在分类中直接访问。
3.不可以声明实例变量。
注意:
1.若分类中的方法名与主类中的方法相同,原类中的方法相当于被覆盖了。
2.若多个分类中有多个方法的方法名相同,会调用最后被编译的分类文件中的方法。
block
块是一种数据类型,不是指针。
优点:block弥补了函数指针不能够直接保存一个函数体的缺憾。
int (^ sumBlock)(int a, int b)
= ^int(int a, int b){//statements;};
可以将block与typedef结合,以便简化使用
例如:
使用下列定义后
typedef int (^sumBlock)(int a, int b)
可以直接使用 sumBlock
块的用途:
1.封装变化
例如:在开发中,若有一个方法有多种算法可以实现时,可以将其最后一个形参设置为block,由此在每次使用此方法的时候,可以传入不同的算法,提高代码的重用性。
2.提高效率
PS:若想在block中改变外部变量的值,外部变量需要使用__block修饰符修饰(很少用)
Protocol
基本格式:
@protocol
@required//必须实现(有警告)
@optional//可选实现(没有警告)
@end
用途:
1.代理设计
私有协议:如果仅想自身遵循一些协议(其他类不遵循),直接写在类的.m文件中。
如果想定义一些属性或变量必须遵循某些协议,那么可以在定义的属性或变量后面直接使用<>来强调所需遵循的协议。
例如:
id<UITableViewDataSource>delegate;//必须遵循数据源代理协议
SEL
SEL数据类型是用来包装方法的。
OC中的消息机制:
1.向指定对象发送消息。
2.将消息通过@selector包装成SEL数据类型。
3.通过指定对象的isa,匹配相应的方法并使用。
- category、block、protocol、SEL
- Category,protocol,Block总结对比
- ios笔记--class关键字,Category,protocol和block笔记
- 黑马程序员-----Category,protocol和block(一)
- 黑马程序员-----Category,protocol和block(二)
- 黑马程序员-----Category,protocol和block(三)
- 黑马程序员-----Category,protocol和block(四)
- 黑马程序员---OC基础---Block、分类Category、协议protocol
- Objective-C-----协议protocol,代码块block,分类category
- block protocol
- Category / Extensions / Protocol /Informal Protocol
- 黑马程序员——OC热身——Category、Protocol、Block、常用结构体
- 黑马程序员——OC基础:block和Protocol及Category
- 黑马程序员——ios知识整理——category、block、protocol
- Category vs Protocol
- Mac/iPhone Category & Protocol
- Category Protocol 使用场合
- Category Protocol 使用场合
- SystemClock.sleep
- Android系统添加多语言支持
- div布局
- lua GC分析
- 点击list控件排序的实现
- category、block、protocol、SEL
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- Oracle用存储过程查询多张表的方法
- Error building Player: Win32Exception: ApplicationName='D:/xxxx/sdk\tools\zipalign.exe
- 逆向教程->软件积分逆向分析
- explicit
- easy ui不同选项卡之间冲突的问题
- 模拟赛 人偶师(时间限制:1000MS,空间限制:256MB)
- Netcat tutorial – command examples on linux