Block数据类型
作用:封装一段代码,可以再任何地方执行。
定义格式:返回值类型 (^变量名)(传入的形参的数据类型) = ^(传入代码块的参数){代码块};
调用方法:变量名(实参);
block其实与函数差不多,他们的相同之处有:
1.都可以保存代码
2.都可以有返回值
3.都有形参和实参
4.调用方式一样
使用注意:
1.Block内部可以访问外面的成员变量
2.默认情况下,Block内部不能修改外面的局部变量
3.如果一定要在Block内部修改外面的局部变量,可以再该局部变量前加__block关键字,这样这个局部变量就可以在Block修改该局部变量
Protocol(又叫‘协议’)
基本用途:可以用来声明一大推方法(不能声明成员变量),只要某个类遵守了这个协议,就相当于拥有这个协议的所有方法声明。只要父类遵守了某个协议,就相当于它的子类也遵守了。协议中有两个关键字:@required(默认):如果在某个声明上表明了,就证明这个方法必须要实现,不然会警告。@optional:这个方法不一定要实现,是可选择的。
注意:一个协议可以遵守了其他多个协议,多个协议之间要用逗号隔开,一个协议遵守了其他协议,就相当于了其他协议中的方法声明。protocol同NSObject基类一样,NSObject也是一个基协议,是最根本最基本的协议,建议每个新的协议都要遵守NSObject协议。
用法是:@interface 类名 <协议名>,也可在定义一个变量的时候,限制这个变量保存的对象保存某个协议。如:类名<协议名称> *变量名;@property 也可用做遵守协议限制 如:@property (nonatomic, strong)Person<协议名称> *person;
时间: 2024-12-16 17:14:43