逗比

作者: my__life | 来源:发表于2016-06-08 22:39 被阅读0次

    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,你会发现其余参数和第一种实现都一样,唯一不同的是再去取值的时候,拿到的是结构体的地址,只要把地址传递过去,就有了最高的操作权限,到时候再去取值就可以取到内存中最新的值。

    相关文章

      网友评论

          本文标题:逗比

          本文链接:https://www.haomeiwen.com/subject/wasddttx.html