说一下个人理解:
UINavigationController 它应该是一个容器控制器,而它管理子控制器的方式是通过“栈”。push 就是压栈, pop 就是出栈。所以在这个控制器中的子控制器都需要通过UInavigationController来实现转场,这也就是为什么,我们在跳转视图的时候,使用 
self.navigatonController去 pushViewController. 而不是self push。所以你上面的问题就不难理解,无论是a.navigationcontroller 还是b.navigationcontroller 如果它们在同一个导航控制器栈中,那么它们所访问的navigationcontroller 应该是同一个对象。