block的定义,赋值
来源:互联网 发布:伯恩茅斯大学 知乎 编辑:程序博客网 时间:2024/05/03 03:23
block的定义
- block属性或变量
格式:返回值类型(^block名称)(参数列表)
- 可以用strong修饰,也可以用copy修饰,苹果官方建议用copy
@property (nonatomic, strong) void(^myBlock)(); // 无参无返回值 @property (nonatomic, strong) void(^myBlock1)(NSString *); // 带参数 @property (nonatomic, strong) NSString *(^myBlock2)(NSString *); // 带参数与返回值 //定义变量 void(^myBlock)() = nil; // 无参无返回值 void(^myBlock1)(NSString *) = nil; // 带参数 NSString *(^myBlock2)(NSString *) = nil; // 带参数与返回值
- block被当做方法的参数
格式:(block类型)参数名称
–》(返回值类型(^)(参数列表)) 参数名称
- (void)test:(void(^)())testBlock//无惨无返回值 - (void)test1:(void(^)(NSString *))testBlock//带参数 - (void)test2:(NSString *(^)(NSString *))testBlock//带参数与返回值
- 使用typedef定义block
// 以后就可以使用myBlock定义无参无返回值的blocktypedef void(^myBlock)();// 使用myBlock1定义参数类型为NSString, 返回中为void的blocktypedef void(^myBlock1)(NSString *);//使用myBlock2定义参数类型为NSString,返回值也为NSString的blocktypedef NSString *(^myBlock2)(NSString *); //定义属性 @property (nonatomic, strong) myBlock testBlock;//定义变量 myBlock testBlock = nil;//当做参数 - (void)test:(myBlock)testBlock;
block的赋值
- 格式:block = ^返回值类型(参数列表){}
- 返回值类型为void时,void可以省略
- 有返回值时也可以省略返回值类型,开发中一般都省略返回值
- 没有参数,小括号也可以省略
// 没有参数没有返回值myBlock testBlock = ^void(){ NSLog(@"test"); }; //没有返回值,void可以省略myBlock testBlock1 = ^(){ NSLog(@"test1"); }; //没有参数,小括号也可以省略 myBlock testBlock2 = ^{ NSLog(@"test2"); }; // 有参数没有返回值myBlock1 testBlock = ^void(NSString *str) { NSLog(str);} // 省略voidmyBlock1 testBlock = ^(NSString *str) { NSLog(str);} // 有参数有返回值myBlock2 testBlock = ^NSString *(NSString *str) { NSLog(str) return @"hi";}//有返回值时也可以省略返回值类型 myBlock2 testBlock2 = ^(NSString *str) { NSLog(str) return @"hi";}
解决block循环引用问题
- block中的
self
,要换成__weak typeof(self)
__weak typeof(self) selfVc = self;
- __weak也可使用__unsafe_unretained,区别就是__weak修饰的指针,当对象销毁后,指针会被自动置为nil,而__unsafe_unretained修饰的指针,当对象销毁后会变成野指针,为了安全,推荐使用__weak
0 0
- block的定义,赋值
- Block的定义
- Block的定义
- 简单的block应用,定义
- Block的定义和使用
- 枚举 以及 block的定义
- ARC无效时block的赋值
- 数组的定义及赋值
- 声明、定义、赋值的区别
- const的定义与赋值
- Block的基本使用、typedef给Block定义别名、Block的应用场景、Block的注意事项
- 定义block
- block 定义
- block 定义
- block的一些规则和定义block的方法
- block的定义和使用,以及block与数组排序
- iOS中block的定义和使用
- oc中block的定义和使用
- 如何用BigDecimal类进行精确运算
- 杭电1098
- 第二周项目2-就拿胖子说事
- 非对称密码的编程使用
- 25. Reverse Nodes in k-Group
- block的定义,赋值
- 如何使用Git客户端进行文件(代码)上传
- ioctl()函数详解
- Spring集成Mybatis错误Result Maps collection already contains value for XXX
- CommonJS模块规范
- Java——java.text.SimpleDateFormat的用法
- 树与二叉树(一)
- usaco 1.1.2 gift1
- Xcode7 发布应用 Failed to locate or generate matching signing assets