黑马程序员——OC基础04—block、protocol
来源:互联网 发布:压实度的数据 编辑:程序博客网 时间:2024/05/21 10:09
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、block
1、block实在函数运行时,存储着回调期间的代码,同时又包含着执行期间的重要收据。
2、block也分为无参无返回值、无参有返回值、有参有返回值、有参无返回值。
1)无参无返回值 的block的定义 void (^myblock)() = ^(){ NSLog(@"block的函数体"); }; void (^myblock)() = ^{ NSLog(@"block的函数体"); }; //后面函数体的小括号在无参数是可以省略 2)有参有返回值block的定义int (^myBlock)(int,int)=^(int a, int b){ return a+b;}
2、
typedef 预处理指令可以快捷的设置Block的类型
typedef void(^类型名)();
例如:typedef void (^myBlock)(int int);
myBlock sum; //此时sum变量被定义为Block类型。
sum=^(int a, int b){
return a+b;
}
3.Block 访问外部变量
当定义block时,会把外部变量以const的方式存放到Block所在的内存中;
在内部的变量的值不能被修改,但是可以被重新定义(存到栈区)。
当要修改外部的局部变量时,必须在要访问的局部变量的类型前面加上__block(注意:这里是两个下划线__block) 关键字,才可以在block代码块中进行访问。修改后的值存放在堆区。
__block int c = 7; MyBlock myBlock = ^(int a, int b){ c=100; NSLog(@"c=%d",c); }//此时c的值可以被修改
二、protocol
1、protocol就是一些方法的声明,一般写到一个.h的文件中,以供其他类去遵守,这些方法分为必须实现和选择实现;protocol也成为正式协议。
使用流程:定义协议.h >>>在类中采纳指定协议>>>实现协议中的方法
2、注意:协议名称一般与文件名称相同,提高代码的可读性。
当遵守了某个协议后,就代表了声明了协议中的方法;
一个协议可以遵守其他协议;
一个类可以遵守多个协议;
一个协议也可以被多个类同时遵守。
3、定义协议
#import <Foundation/Foundation.h> @protocol MyProtocol <NSObject> //protocol 协议名称 <NSobject> @required - (void)test; //@required 是要求遵守协议的类实现这个方法,不实现时只会发出警告 @optional - (void)test2; //@optional 不要求遵守协议的类实现这个方法 @end
4.格式:@protocol 类名 <协议名称>这里的协议名称同定义时候的相同,如果为多个协议,可以以<aaa,bbb,ccc>的格式进行采用。@interface Person : NSObject <MyProtocol, MyProtocol2> @end @protocol MyProtocol <MyProtocol2> 变量的遵守某个协议时,如下这样使用:id <MyProtocol> obj; 属性遵守某个协议时,如下使用:@property (nonatomic, strong) id <MyProtocol> obj; @property (nonatomic, strong) Dog<MyProtocol> *dog;
“`
- 黑马程序员——OC基础04—block、protocol
- 黑马程序员——OC基础---block,protocol
- 黑马程序员——OC基础---Block、protocol
- 黑马程序员——OC—block和protocol协议
- 黑马程序员——OC语法 block和protocol
- 黑马程序员——OC之ARC、Block、Protocol
- 黑马程序员员—OC(block和protocol)
- 黑马程序员——OC语言基础篇---block和protocol
- 黑马程序员——OC基础:block和Protocol及Category
- 黑马程序员—OC语言基础—Block类型与Protocol协议小结
- 黑马程序员—IOS基础之OC—block和protocol
- 黑马程序员------OC基础-----block和protocol
- 黑马程序员 OC基础: Block 和 Protocol
- 黑马程序员——OC基础学习(五)---分类(Category),代码块Block和protocol代理设计模式
- 黑马程序员——OC基础---protocol(协议)
- 黑马程序员——block与protocol
- 黑马程序员---OC基础---Block、分类Category、协议protocol
- 黑马程序员——OC基础之Block
- 单例模式
- ARC中强指针与弱指针
- 获取屏幕真实高度包含NavigationBar(底部虚拟按键)
- css3直角梯形
- linux学习教程(一)安装篇
- 黑马程序员——OC基础04—block、protocol
- IOS开发核心语言0bjective C
- Arduino系列教程之 – PWM的秘密
- 对象排序
- Android中ImageView的图片宽度设置
- iOS 求两经纬度中心点,并返回缩放级别,可以参考
- Android ListView嵌套checkbox点击事件
- HTTP详解(1)-工作原理
- Mushroom User's Manual