__block
在block里可以访问局部变量,但不能修改局部变量。这是因为当局部变量在block中使用时,实际上使用的变量是在block中复制的数据,所以在block中修改的变量并不能修改block外面的变量值。这里要注意的是可变数组或者字典在block中添加或删除数据时,并不用__block
修饰,因为在block里使用这些数组时,数组的指针并没有发生变化,仅仅是内存的内容发生了变化。
相思形色露,欲掩不从心。
在block里可以访问局部变量,但不能修改局部变量。这是因为当局部变量在block中使用时,实际上使用的变量是在block中复制的数据,所以在block中修改的变量并不能修改block外面的变量值。这里要注意的是可变数组或者字典在block中添加或删除数据时,并不用__block
修饰,因为在block里使用这些数组时,数组的指针并没有发生变化,仅仅是内存的内容发生了变化。
《Objective-C高级编程》是一本有趣又难懂的书,全书就讲了引用计数、Block、GCD三个概念,有趣是因为讲原理、实现的部分是其他iOS专业书籍里少有的。然而每个章节不读个三五遍还是比较难理解贯通。本文针对其中的Block部分做些简单的笔记记录,讲述Block的用法和部分实现原理,详细解说从原书中寻。
每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒?
关于答案:网上有非常多的解答。包括:
在上一篇文章SDWebImage源码解析(一)中,主要介绍了SDWebImage的基本架构、各种类的作用、相关工具类(NSData+ImageContentType、SDWebImageCodersManager、SDWebImageImageIOCoder以及SDWebImageCompat)的详细分析。在本文中,将会分析SDWebImage的UIView+WebCache、UIWebImageManager相关核心类。
在上一篇文章SDWebImage源码解析(二)中,主要详细分析了SDWebImage的UIView+WebCache、UIWebImageManager两个核心类。在本文中,将会继续分析SDWebImage的SDImageCache、SDWebImageDownloader和SDWebImageDownloaderOperation核心类。