self.navigationController和delegate.navigationController有什么区别

S.P*_*.P. 3 iphone delegates objective-c uiviewcontroller uinavigationcontroller

我可以用

MyFirstAppDelegate *delegate = (MyFirstAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

要么

[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

那么两者有什么区别?

请回答我 ......

提前致谢..

Tec*_*Zen 6

当您从不是由导航控制器控制的视图控制器的对象访问导航控制器时,可以使用第一个窗体.该表单通过拥有它的对象(即应用程序委托)访问导航控制器.由于可以从程序中的任何位置轻松调用应用程序委托,因此它是一个停放事物的好地方,而不是任何对象可能需要引用.

您可以使用由导航控制器控制的视图控制器中的第二种形式.它只能在先前被推入堆栈的视图控制器中工作.