Swift是使用ARC来自动管理内存,这对开发者提供了便利,但从OC时代引入ARC以来,就一直面临着一个问题:循环引用。使用不当造成的循环引用,会导致内存无法释放,为解决这个问题,swift引入了weak和unowned两个关键字。当然,值类型是不涉及循环引用的问题,所以ARC仅仅应用于类的实例。
在编码时一般会出现两种情况的循环引用:1. 普通对象的循环强引用 2. 函数或闭包间的循环引用。 第一种情况相对比较容易发现,第二种情况更隐蔽,在使用的闭包时会无意间引入。
neilwu's time machine
Swift是使用ARC来自动管理内存,这对开发者提供了便利,但从OC时代引入ARC以来,就一直面临着一个问题:循环引用。使用不当造成的循环引用,会导致内存无法释放,为解决这个问题,swift引入了weak和unowned两个关键字。当然,值类型是不涉及循环引用的问题,所以ARC仅仅应用于类的实例。
在编码时一般会出现两种情况的循环引用:1. 普通对象的循环强引用 2. 函数或闭包间的循环引用。 第一种情况相对比较容易发现,第二种情况更隐蔽,在使用的闭包时会无意间引入。
SDWebImage 对gif图片的支持不是非常好,我们可以在其项目的讨论区看到大家的吐槽( Drop our GIF support and integrate a 3rd party solution #945)。我简单修改了几处源码,使用 FLAnimatedImage来显示gif图片。SDWebImage 仍用作默认的图片加载和缓存,只是在需要显示gif图片时,改用FLAnimatedImage。
之前在使用UITableView时,总是在Storeboard里直接把property cell放到相应ViewController的Table里。如果一个cell需要在其他ViewController里进行复用,我们可以直接在IB里进行复制,粘贴,这样虽然比较简单,但以后项目维护过程中,某个cell发生了改变,要重复该操作,且不能遗漏修改。可以在xib中设计cell来进行复用。