Objective C:何时在 App Delegate 中使用方法以及何时在 View Controller 中使用方法

Posted

技术标签:

【中文标题】Objective C:何时在 App Delegate 中使用方法以及何时在 View Controller 中使用方法【英文标题】:Objective C: When to use methods in App Delegate and when to use methods in View Controller 【发布时间】:2011-04-07 04:33:41 【问题描述】:

我对 View Controller 和 App 委托类中的以下方法有点困惑

App 委托中的方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

ViewController 中的方法:

- (void)viewDidLoad 

什么情况下需要在appdelegate或者ViewController方法中添加代码?我认为对于视图的切换,我们需要将其包含在 app 委托方法中,有什么我们需要遵守的经验法则吗?

谢谢!

【问题讨论】:

【参考方案1】:

在启动时调用,application:didFinishLaunchingWithOptions: 通常包含初始化应用程序的逻辑(例如设置核心数据对象、注册推送通知等)。另一方面,viewDidLoad 的目的是在视图控制器显示之前对其进行初始化。

【讨论】:

【参考方案2】:

application:didFinishLaunchingWithOptions: 应该用于启动应用程序时必须进行的设置,例如

核心数据堆栈 恢复应用程序状态 创建应用程序导航控制器或标签栏

viewDidLoad 应该用于只需要为特定视图控制器完成的任何配置。在某些情况下,视图可能无法加载,因此在应用委托中进行该配置是没有意义的。

例如

在视图加载时打开 HTTP 连接 请求查看位置数据

【讨论】:

以上是关于Objective C:何时在 App Delegate 中使用方法以及何时在 View Controller 中使用方法的主要内容,如果未能解决你的问题,请参考以下文章

关于何时在 Objective-C 中发布的参考

Objective C如何在App内部调用外部dylib 和 framwork

为啥/何时应该使用静态声明变量?

使用 Objective C iOS App 在 textview 中显示 JSON 值

tableview 图像未正确显示 - iOS 8 iPhone App Objective C

从另一个类调用委托方法