IOS开发---OC语言-㉙内存管理:block的使用
来源:互联网 发布:大淘营淘宝 编辑:程序博客网 时间:2024/05/16 02:03
// main.m// 04-block#import <Foundation/Foundation.h>/* block要掌握的东西 1> 如何定义block变量 int (^sumBlock)(int, int); void (^myBlock)(); 2> 如何利用block封装代码 ^(int a, int b) { return a - b; }; ^() { NSLog(@"----------"); }; ^ { NSLog(@"----------"); }; 3> block访问外面变量 * block内部可以访问外面的变量 * 默认情况下,block内部不能修改外面的局部变量 * 给局部变量加上__block关键字,这个局部变量就可以在block内部修改 4> 利用typedef定义block类型 typedef int (^MyBlock)(int, int); // 以后就可以利用MyBlock这种类型来定义block变量 MyBlock block; MyBlock b1, b2; b1 = ^(int a, int b) { return a - b; }; MyBlock b3 = ^(int a, int b) { return a - b; }; */typedef int (*SumP)(int, int);typedef int (^MyBlock)(int, int);int sum(int a, int b){ return a + b;}int main(){ // int (*p)(int, int) = sum; // int (*p2)(int, int) = sum; // SumP p = sum; // SumP p2 = sum; /* int (^sumBlock)(int, int); sumBlock = ^(int a, int b) { return a + b; }; int (^minusBlock)(int, int) = ^(int a, int b) { return a - b; };*/ MyBlock sumBlock; sumBlock = ^(int a, int b) { return a + b; }; MyBlock minusBlock = ^(int a, int b) { return a - b; }; MyBlock multiplyBlock = ^(int a, int b) { return a * b; }; NSLog(@"%d - %d - %d", multiplyBlock(2, 4), sumBlock(10 , 9), minusBlock(10, 8)); return 0;}void test3(){ int a = 10; __block int b = 20; void (^block)(); block = ^{ // block内部可以访问外面的变量 //NSLog(@"a = %d", a); // 默认情况下,block内部不能修改外面的局部变量 // a = 20; // 给局部变量加上__block关键字,这个局部变量就可以在block内部修改 b = 25; }; block();}// 有返回值、有形参的blockvoid test2(){ /* // 指针函数的指针 int (*p)(int, int) = sum; int d = p(10, 12); NSLog(@"%d", d); */ int (^sumblock)(int, int) = ^(int a, int b){ return a + b; }; int c = sumblock(10, 11); // 用一个block输出n条横线 void (^lineBlock)(int) = ^(int n) { for (int i = 0; i<n; i++) { NSLog(@"----------------"); } }; lineBlock(5);}// 没有返回值、没有形参的blockvoid test(){ // block用来保存一段代码 // block的标志:^ /* block跟函数很像: 1.可以保存代码 2.有返回值 3.有形参 4.调用方式一样 */ // 定义block变量 /* void (^myblock)() = ^(){ NSLog(@"----------------"); NSLog(@"----------------"); };*/ // 如果block没有形参,可以省略后面的() void (^myblock)() = ^{ NSLog(@"----------------"); NSLog(@"----------------"); }; // 利用block变量调用block内部的代码 myblock(); myblock();}
0 0
- IOS开发---OC语言-㉙内存管理:block的使用
- IOS开发---OC语言-㉗内存管理ARC的基本使用
- IOS开发之Block的使用和内存管理
- ios开发-OC内存管理的学习
- IOS开发---OC语言-㉘内存管理ARC循环调用
- iOS开发语言之OC 初级内存管理
- IOS开发---OC语言-⑲内存管理:计数器的基本操作
- iOS的block内存管理
- iOS开发 - Block块的使用(二)内存管理和特性
- ios开发 block 在ARC机制下的内存管理
- IOS开发—block对外部变量的内存管理
- IOS开发---OC语言-⑳内存管理:set方法内存管理
- OC的手动内存管理基础(IOS开发)
- IOS开发---OC语言-㉖内存的总结
- iOS开发-Day20-OC 手动内存管理
- iOS开发之OC内存管理
- IOS开发笔记20-OC内存管理
- ios 开发 OC编程 内存管理
- 选项卡
- [Hb-VIII] 转移指令 显示带色字符串
- conkeror 常用快捷键
- Xcode 创建工程时没有Class Prefix
- 黑马程序员——字符串3:操作字符串的其他类
- IOS开发---OC语言-㉙内存管理:block的使用
- 梯度下降算法中的数学
- C++调用Java
- PHP $_SERVER详解
- orcl 的emp
- 【学渣的奋斗之路】【汇编语言】 2.4~2.8
- Linux磁盘分区
- 微信相关的 js 操作
- IOS开发---OC语言-㉚protocol协议