ASViewController
是UIViewController
的一个子类,它为承载ASDisplayNode
层次结构添加了一些有用的特性。
ASViewController
可以代替任何UIViewController
,包括UINavigationController
、UITabBarController
和UISplitViewController
,或者作为modal view controller使用。
使用ASViewController
的好处:
-
节省内存。一个离开屏幕的
ASViewController
将自动减小fetch
数据的大小及其任何子对象的显示范围。这是大型应用程序中内存管理的关键。 -
ASVisibility功能。当在
ASNavigationController
或ASTabBarController
中使用时,这些类知道使视图控制器可见所需的用户点击次数。
随着时间的推移,会添加更多的特性,因此最好将视图控制器从这个类中分离出来。
使用
UIViewController
提供自己的视图。ASViewController
在其指定的initializer中分配了一个要管理的node -initWithNode:。
考虑下面的ASViewController
子类PhotoFeedNodeController
,它来自ASDKgram
示例项目,它希望使用 table node 作为其托管node。
此 table node 在其-initWithNode
:指定的初始值设定项方法中被分配给ASViewController
。
- (instancetype)init
{
_tableNode = [[ASTableNode alloc] initWithStyle:UITableViewStylePlain];
self = [super initWithNode:_tableNode];
if (self) {
_tableNode.dataSource = self;
_tableNode.delegate = self;
}
return self;
}
转换提示:如果你的应用程序已经有一个复杂的视图控制器层次结构,那么最好将它们都作为viewcontroller
的子类。也就是说,即使您不使用ASViewController
指定的初始值设定项initWithNode:
,并且只以传统的UIViewController
的方式使用ASViewController
,如果您选择在应用程序的不同区域采用它,这将为您提供额外的节点支持。