正文
在上一篇文章中,已经初步介绍了VTMagic的部分特性和基本使用,同时也收到了不少反馈,本文将进一步介绍VTMagic使用中的一些要点和技巧,并针对部分反馈做一些总结,希望对各位开发者能有所帮助。
重用机制
该机制是整个框架的核心,它保证了单个模块中即使有数十上百个页面,应用内存依旧可控,不会出现突然暴涨,甚至被系统强制杀死的情况。在预加载机制下,VTMagic默认会加载当前页面和下一个页面,也就是说同时被加载的页面可能有两个,也可能有三个,具体视当前页面的位置而定。若当前页面处于两侧边缘,则被加载的页面有两个,若在中间则会有三个页面被加载。这也是有些开发者反馈的viewControllerAtPage:
方法会被多次调用的原因。
而之前加载的其它页面则会在不需要时被移除,并放到内部缓存池中等待重用。当某个页面即将被重用时,方法vtm_prepareForReuse
会被调用,该方法属于协议VTMagicReuseProtocol
,需要开发者在各子页面中手动重写,通常可以在这个方法中清除页面旧数据、修正页面偏移等。
需要说明的是,可以通过将属性needPreloading
置为NO
来关闭预加载机制。在预加载机制关闭的情况下,VTMagic只会加载当前显示的页面,而不再预加载下一页,同时点击菜单项切换时,页面也不再有切换动画。
生命周期方法
当某个子页面出现或消失时,VTMagic能准确触发其相应的生命周期方法(viewWillAppear:
等)。如果该页面是可重用的,则可以将网络请求放在viewDidAppear:
方法中,然后根据