http://daily.zhihu.com/story/3603866
沙盒的Document中存放什么?
Paste_Image.png
Block是什么?苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,Block可以在任何时候执行。
Block和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样。
block内部是调用了一个结构体中的函数: static struct main_block_desc_0 { size_t reserved; size_t Block_size; void (copy)(struct main_block_impl_0, struct __main_block_impl_0); void (dispose)(struct __main_block_impl_0*); }
然后经过分析该c++文件我们知道 block实际上是: 指向结构体的指针 编译器会将block的内部代码生成对应的函数
而在mian.m中,调用普通的int变量时,传过来的age其实是一个值传递,而__block则是引用传递! 所以,才是如上的结果!
使用了__block 所以创建了一个block 类型的结构体,接下来会才是调用block,你会发现其余参数和第一种实现都一样,唯一不同的是再去取值的时候,拿到的是结构体的地址,只要把地址传递过去,就有了最高的操作权限,到时候再去取值就可以取到内存中最新的值。
网友评论