iOS block的使用

前言:

block是iOS开发中时间及参数传递的一种方法,和代理模式(delegate)相比,block是简单易用的轻量级事件传递方法。

初始化:

手打如下代码,或者从代码块把代码拖拽出来。

技术图片

 

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #ba2da2; background-color: #ffffff }
span.s1 { color: #ba2da2; background-color: #ffffff }
span.s2 { background-color: #ffffff }
span.s3 { color: #703daa; background-color: #ffffff }
span.s4 { color: #000000 }
span.s5 { color: #4f8187 }

typedef void(^upLoadImage)(NSString *str);//传参类型及形参

 

@property(nonatomic, strong) upLoadImage block;

 

方法的实现

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #ba2da2; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #000000; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #4f8187 }
span.s3 { color: #ba2da2 }

if (self.block) {//先判断

                self.block(file);

            }

使用方法前要先判断方法是否实现,若方法没有实现直接使用的话,会崩溃。

方法的使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #4f8187; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #000000; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #ba2da2; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #3e1e81 }
span.s3 { color: #31595d }
span.s4 { color: #4f8187 }
span.s5 { color: #703daa }
span.s6 { color: #272ad8 }
span.s7 { color: #d12f1b }

GXuploadImage *load = [[GXuploadImage alloc] init];

    __weak __typeof(self) weakSelf = self;

    load.block = ^(NSString *str) {

 

    };

在block方法里面若使用self的方法和变量的时候,要使用weakSelf,否则会导致循环引用。

 

 

 

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #ba2da2; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Menlo; color: #000000; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #4f8187 }
span.s3 { color: #ba2da2 }

相关文章