为啥“ARFaceTrackingConfiguration.isSupported”语句在 AppDelegate 中,而不是在 ViewController 中?

Posted

技术标签:

【中文标题】为啥“ARFaceTrackingConfiguration.isSupported”语句在 AppDelegate 中,而不是在 ViewController 中?【英文标题】:Why "ARFaceTrackingConfiguration.isSupported" statement is in AppDelegate, not in ViewController?为什么“ARFaceTrackingConfiguration.isSupported”语句在 AppDelegate 中,而不是在 ViewController 中? 【发布时间】:2019-04-28 21:09:07 【问题描述】:

为什么 ARKit 工程师将 ARFaceTrackingConfiguration.isSupported 语句放在 AppDelegate.swift 文件中而不是在 ViewController.swift 文件中?

class AppDelegate: UIResponder, UIApplicationDelegate 
    var window: UIWindow?

    func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool 

        if !ARFaceTrackingConfiguration.isSupported                
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "unsupportedDeviceMessage")
        
        return true
    

我认为ViewController.swift 文件是这个条件语句最合适的地方。

我说的对吗?

【问题讨论】:

【参考方案1】:

经过调查,我认为 application(_:willFinishLaunchingWithOptions:) 实例方法更适合在 if 语句检查 ARFaceTrackingConfiguration 中实例化故事板(然后呈现 ViewController)。

Apple 对此方法的评价如下:

使用此实例方法来初始化您的应用并准备运行。此方法在您的应用程序启动并加载其主情节提要或 nib 文件之后,但在您的应用程序状态恢复之前调用。在调用此方法时,您的应用处于非活动状态。

【讨论】:

以上是关于为啥“ARFaceTrackingConfiguration.isSupported”语句在 AppDelegate 中,而不是在 ViewController 中?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?