Block和Protocol的小结
来源:互联网 发布:淘宝上货 生产许可证 编辑:程序博客网 时间:2024/06/11 19:20
Block:
oc的另一种数据类型block
block用来保存一段代码
block的标志是^
block跟函数很像:
1:可以保存代码
2:有返回值
3:有形参
4:调用方式和函数一样
定义block变量:
void(^myblock)() =^{
NSLog(@”----------------”);
}; //上面是一个没有返回值没有参数的block
下面定义一个有返回值有参数的block
int(^sumblock)(int int ) = ^(int a, int b){
return a+b;
}
int c =sumblock(10,11);
//和指向函数的指针有点像。
简略写法:利用typedef
block总结:
1:如何定义block变量
int (^MyBlock)(int , int)
void(^MyBlock)()
2:如何利用block封装代码
^(int a, int b){
return a+b;
};
//上面如果没有形参可以省略括号
3:block访问外面的变量
block内部可以访问外面的变量
默认情况下,block内部不能修改外面的局部变量
如果给变量加上__block关键字,这个外部的局部变量就可以在block内部修改
4:利用typedef定义block类型
typedef int (^MyBlock)(int , int );
MyBlock block
MyBlock b1,b2;
记住给block变量赋值完成后要加上一个分号
protocol的用法:
1:可以用来声明一大堆方法(不能声明成员变量)
2:只要某个类遵守了这个协议,就相当于拥有了这个协议里面的所有方法声明
3:只要父类遵守了这个协议,就相当于子类也遵守了这个协议
格式:
@protocol 协议名称
// 方法声明列表
@end
某个类遵守某个协议
@interface 类名:父类<协议名称>
@end
在协议里面可以给方法加上关键字
@required (默认的也是这个) // 必须实现的方法
@required
-(void)test;
-(void)test2;
@optional //可以不用实现的协议内函数
协议遵守协议:
@protocol 协议名称<其他协议1,其他协议2>
@end
定义一个变量的时候限制这个变量保存的对象遵守某个协议
类名<协议名称>*变量名
id<协议名称> 变量名
NSObject<MyProtocol>*obj
id<MyProtocol>obj2
如果没有遵守协议,编译器会爆出警告
@property中声明的属性也可以做一个遵守协议的限制
@property(nonatomic strong)Dog<MyProtocol>*dog
@property(nonatomic strong)id<MyProtocol> dog2
协议可以写在类的声明中也可以单独写.h文件中
区分:
如果这份协议只需要这个类来遵守的话,可以将这个协议写在这个类的声明里面
如果这个协议需要多个类来遵守的时候,应该单独将协议写在.h文件中
//一般情况下,都定义在单独文件中
- Block和Protocol的小结
- 黑马程序员——block和protocol小结
- iOS开发中--block和protocol(协议)小结
- Block 和 Protocol
- Block和Protocol
- 黑马程序员-block和protocol
- OC中的block和protocol
- Object-C-block和protocol
- 黑马程序员-11.OC的内存管理和block、protocol
- ios开发-OC中ARC、block和protocol的学习
- block protocol
- OC语言BLOCK和Protocol总结
- 黑马程序员------OC基础-----block和protocol
- 【黑马程序员】-oc中的block和protocol
- 黑马程序员-OC-block和protocol
- 黑马程序员 OC基础: Block 和 Protocol
- block块和Protocol(协议)
- block 的小结
- 将sql文件导入PowerDesigner中的方法(将oracle sql文件转换成mysql)
- UVA1526 -- 二分对数据的处理
- Arm-linux-gcc-4.3.2安装步骤
- 我就这样被“踢”进了售前(ZT)
- 块擦写flash任意位置的修改
- Block和Protocol的小结
- 程序员必读书单
- opencv 角点检测相关
- 精容数安云盾(DataVault)
- 监控oracle的等待事件
- Apache和tomcat多项目整合发布
- git分支branch详解
- 第十五篇:而今迈步从头越--最简单的i2c
- Python正则表达式指南