动态规划定义[https://en.wikipedia.org/wiki/Dynamic_programming] 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?[h...
动态规划定义[https://en.wikipedia.org/wiki/Dynamic_programming] 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?[h...
分治算法:谈一谈大规模计算框架 MapReduce 中的分治思想[http://time.geekbang.org/column/article/73503] 回溯算法:从电...
散列表(上):Word 文档中的单词拼写检查功能是如何实现的?[http://time.geekbang.org/column/article/64233] 散列表(中):如...
数组:为什么很多编程语言中数组都从 0 开始编号?[http://time.geekbang.org/column/article/40961] 链表:如何实现 LRU 缓存...
@Double丶K 调用func0时,传进去的是b2,就是说cself就是b2。Block结构体捕获了test的瞬时值就是那个字符串,然后作为参数,用来初始化Block,接着用初始化好的结构体给b2变量赋值(指针赋值 b2指向初始化好的Block)。b2结构体中的成员变量test是新建的,所以他的地址跟外面的test地址一定不同,而指向的对象却是同一个,对象是谁呢字符串"test1111"。你的截图和你的解释都有问题,分析这个问题,关键要看C++中的int main()方法而不是fun0,这是其一。其二是你的解释,Block并没有拷贝任何东西。Block拷贝东西是要调用_block_copy->XXassign的。这里只是单纯的值截获。解释产生新指针要在Block的结构体_block_impl_0中去看,因为新添了一个成员变量 NSString *test;
iOS block 面试题(看这篇就够了)此类的例子很多博客都有,只是解释的都很模糊,看了也还是不明白 第一题: test会打印什么?因为啥? 答案是test1111 原因: /*2019-03-07 15:36:0...
前情提要: 引用计数内存管理: 自己生成对象自己持有; 非自己生成的对象,自己也能持有; 不再需要自己持有的对象时释放; 非自己持有的对象无法释放。 生成并持有对象: all...
前情提要
前情提要 GCD极大地简化了平时开发中处理多线程问题的难度,但有时会遇上死锁,导致各种各样的问题,本文用简短的,通俗易懂的方式,与大家一起讨论如何分析死锁,了解了形成死锁的根...
第一题你的解释不对。之所以指针地址变了跟NSString *test = __cself->test; // bound by copy是没有关系的,这条语句,只是从cself的结构体里拿到了他的成员变量test。关键在于这个test是block初始化结构体中的一个成员变量,相当于初始化结构体的时候,向内存新申请了一个NSString类型的指针,只不过现在没有指向任何值。在block的初始化结构体初始化的时候,会有一个赋值的过程,直接将字符串test111111赋值给该结构体的成员变量test,也就是cself->test。
rewrite下,字符串test被我改成了testasdasd方便看:
NSString *testasdasd = (NSString *)&__NSConstantStringImpl__var_folders_xh_7qhjzbrx7zz361c_rtp2lh0w0000gn_T_ViewController_00e2ba_mi_0;
TestBlock b2 = ((void (*)())&__ViewController__viewDidLoad_block_impl_0((void *)__ViewController__viewDidLoad_block_func_0, &__ViewController__viewDidLoad_block_desc_0_DATA, testasdasd, 570425344));
它要初始化结构体__ViewController__viewDidLoad_block_impl_0,直接把testasdasd赋值给他的成员变量-cself->testasdasd。所以对象的内存地址没有变,但是在Block内部,指向对象的指针变了,因为这个指针是结构体新创建的。
iOS block 面试题(看这篇就够了)此类的例子很多博客都有,只是解释的都很模糊,看了也还是不明白 第一题: test会打印什么?因为啥? 答案是test1111 原因: /*2019-03-07 15:36:0...
前情提要
前情提要 基于Block原理分析(1)[https://www.jianshu.com/p/afd031effac0],继续分析Block中的剩余知识点。 1.__block...
前情提要 1.闭包、Block是一个带有自动变量值(可以截获自动变量值)的匿名函数。截获的含义是保存该自动变量的瞬间值。2.OC中如果要改变Block截获的外部自动变量的值,...
前情提要 在文章正在审核中... - 简书[https://www.jianshu.com/p/96a4e264ce55]文章的基础之上,讨论Apple又给出的两个简单的例子...
前情提要 Swift的闭包和OC的Block是一回事,是一种特殊的函数-带有自动变量的匿名函数。 分别从语法和原理上讲解闭包 语法 Swift中,函数和闭包都是引用类型 无论...
前情提要 Swift的泛型侧重于将类型作为一种变量或者占位符来使用。 为什么要用泛型呢,就是方便。 比如上一篇文章中的用到的一个类: 类定义: open class UICo...
前情提要 iOS13对CollectionView进行了大的更新之后,一个CollectionView几乎可以应对开发中90%的UI需求。 开发过程中,我们不再需要思考"怎么...