Swift是使用ARC来自动管理内存,这对开发者提供了便利,但从OC时代引入ARC以来,就一直面临着一个问题:循环引用。使用不当造成的循环引用,会导致内存无法释放,为解决这个问题,swift引入了weak和unowned两个关键字。当然,值类型是不涉及循环引用的问题,所以ARC仅仅应用于类的实例。

在编码时一般会出现两种情况的循环引用:1. 普通对象的循环强引用 2. 函数或闭包间的循环引用。 第一种情况相对比较容易发现,第二种情况更隐蔽,在使用的闭包时会无意间引入。

Read more »

之前在使用UITableView时,总是在Storeboard里直接把property cell放到相应ViewController的Table里。如果一个cell需要在其他ViewController里进行复用,我们可以直接在IB里进行复制,粘贴,这样虽然比较简单,但以后项目维护过程中,某个cell发生了改变,要重复该操作,且不能遗漏修改。可以在xib中设计cell来进行复用。

Read more »