先进技术

ASVisibility

ASNavigationControllerASTabBarController都实现了ASVisibility协议。即使没有ASDisplayNodes,也可以使用这些类,从而使他们称为继承层次结构的合适基类。对于任何作为ASViewControllers的子视图控制器,这些类都知道视图控制器可见所需的确切用户点击次数(如果当前可见,则为0)

当知道了视图控制器的可见性深度后,

  1. 视图控制器可以在用户接近或离开用户时自动采取适当的措施。
  2. app的非默认Tabs可能会预加载某些数据;
  3. 导航堆栈中深3层的控制器可能会主动释放使用的图像、文本和提取内存中的数据

任何视图控制器容器类都可以实现一个简单的协议来集成。例如,ASNavigationController将为只需要点击一个后退按钮即可显示该可见性的视图控制器返回其自己的visibleDepth+1的可见性深度,

可以通过在ASViewControllers上自动启用AdjustRangeModeBasedOnViewEvents来自动选择某些行为。启用此功能呢后,如果视图控制器和节点符合ASRangeControllerUpdateRangeProtocol(ASCollectionNode和ASTableNode默认遵循),范围会随着可见深度的增加而自动减小以节省内存

ASRunLoopQueue

即使在主线程,Texture扔可以通过相当出色的ASRunLoopQueue大大减少对用户体验的影响

ASRunloopQueue将必须在主线程执行的操作分解我更小的块,轻松的达到原本大小的1/10,从而可以分散例如初始化UIView甚至销毁对象的操作,使runLoop 更加频繁的运转。这种周期性的运转使设备更加频繁的检查用户是否已经已经开始触摸或动画计时器是否有新的帧需要绘制,这样即使设备非常繁忙并正在处理大量主线程,也会提供更高的响应速度

运行Texture时 会默认启用ASRunLoopQueue