获取顶层的UIViewController遇到的坑:
之前做项目更新购物车的badge时,本意是获取TabbarController,然后设置badge,但是出现了崩溃。原因是获取到rootViewController时,不是TabbarController,而是UIApplicationRotationFollowingController,然后调用更新badge的时候出现了@selector崩溃。观察发现是因为获取root时出现了AlertView,然后导致了keyWindow的rootViewController发生了变化。自己猜测是因为AlertView变成了UIAlertController。
解决方案:app启动之后在didFinishLaunchingWithOptions里直接获取到rootController然后放到单例里,用的时候直接取就可以。