【问题标题】:AppDelegate.swift and Main.swift and how to use themAppDelegate.swift 和 Main.swift 以及如何使用它们
【发布时间】:2017-04-06 17:57:38
【问题描述】:

我在操场上学到了一些 Swift 的基础知识。这个问题仍然很基本,所以请耐心等待。 归结为:

顶级表达式去哪了?这里最好的礼仪是什么? 假设我想制作一个只在控制台上打印“Hello world”的应用程序。 print("Hello World") 函数应该放在哪里?

带有@UIApplicationMain 属性的AppDelegate 似乎有这项工作。但我只能通过删除所述属性、创建main.swift 文件并将其放在那里来获得顶级表达式。

我正在尝试使用 iOS 应用程序来做到这一点

【问题讨论】:

  • iOS 应用? macOS 应用程序?命令行工具?
  • @MartinR iOS 应用
  • 简而言之,AppDelegate 中有一些callbacks 提供给您(参见AppDelegate vs. main Swift 的AppDelegate 与Objective-C 的几乎相同)。就像应用程序第一次运行时的回调、点击主页按钮时的回调、再次点击应用程序图标时的回调一样。开发者 Omari 的回答为你重点介绍了相关语法

标签: swift xcode


【解决方案1】:

请检查 iOS 应用程序生命周期AppCycle。 didFinishLaunchingWithOptions 方法在您的应用程序启动时执行。我建议您将代码放在该函数中。

       func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

它是您实际创建 mainWindow 和 rootViewController 的起点,但您也可以执行其他操作并将打印语句放入该函数中!如果您使用情节提要,这将自动为您完成。然后将代码放在连接到情节提要的 ViewController 类中

这是应用程序生命周期:

应用状态

未运行 该应用尚未启动或正在运行,但已被系统终止。

不活动 该应用程序正在前台运行,但当前未接收事件。 (不过它可能正在执行其他代码。)应用程序通常只会在转换到不同状态时短暂停留在此状态。

活跃 该应用程序正在前台运行并正在接收事件。这是前台应用程序的正常模式。

背景 该应用程序在后台并执行代码。大多数应用程序在被暂停的过程中会短暂进入此状态。但是,请求额外执行时间的应用程序可能会在此状态下保持一段时间。此外,直接在后台启动的应用程序会进入此状态而不是非活动状态。有关如何在后台执行代码的信息,请参阅后台执行。

暂停 该应用程序在后台,但未执行代码。系统会自动将应用程序移至此状态,并且在此之前不会通知它们。挂起时,应用程序保留在内存中,但不执行任何代码。 当内存不足时,系统可能会在不通知的情况下清除挂起的应用程序,以便为前台应用程序腾出更多空间。

以下是您在 Appdelegate 类中找到的其他状态转换

application:willFinishLaunchingWithOptions:——此方法是您的应用在启动时执行代码的第一次机会。

application:didFinishLaunchingWithOptions:——此方法允许您在应用显示给用户之前执行任何最终初始化。

applicationDidBecomeActive:——让您的应用知道它即将成为前台应用。使用此方法进行最后一分钟的准备工作。

applicationWillResignActive:——让您知道您的应用正在从前台应用过渡。使用此方法可将您的应用置于静止状态。

applicationDidEnterBackground:——让您知道您的应用现在正在后台运行,并且可能随时暂停。

applicationWillEnterForeground:——让您知道您的应用正在移出后台并回到前台,但它尚未处于活动状态。

applicationWillTerminate:——让您知道您的应用程序正在被终止。如果您的应用暂停,则不会调用此方法。

(来自苹果网站的生命周期和转换描述)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2016-12-18
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多