iphone - 了解 iOS 7 应用程序的应用程序流程。发射时会发生什么?

标签 iphone ios objective-c uikit foundation

我是 Objective-C 和 iOS 编程的新手。我已经阅读了一些 Apple 的“入门”文档,并下载了一些示例应用程序来尝试熟悉应用程序中发生的事情。我感到困惑的是应用程序启动后到底发生了什么。我在 main.m 中看到 UIApplicationMain 被调用并调用了 AppDelegate。据我了解,现在,如果 applicationDidFinishLaunching 返回 true,应用程序将进入主事件循环。

这一切都正确吗?如果是这样,我如何将我的代码与事件联系起来?当事件发生时,我在哪里创建我的类的实例?

最后,根据我的理解,Xcode 现在创建所有带有 Storyboard的模板应用程序。但是,我正在查看的一些应用程序有点旧并且不使用 Storyboard,但我在目录中的任何位置都看不到 .xib 或 .nib 文件,但应用程序成功构建。我假设应用程序需要这些文件是错误的吗?

最佳答案

应用程序不需要 .xib 或 .nib 即可运行。许多程序员不使用任何生成 Storyboard或 .nib 文件的可视化设计工具。如果您愿意,您可以在代码中完全定义您的 UI。

在 main.m 中调用 UIApplicationMain 会创建一个单例 UIApplication 对象,设置一个事件循环,并设置与 UIApplication 协同工作的 UIApplicationDelegate,这样您就可以在其生命周期的关键点自定义应用程序的行为。 UIApplication 为您管理事件循环。它从系统接收事件并将它们分派(dispatch)给您的代码进行处理。

为了真正理解事件处理,您需要理解响应者链。如果您查看应用委托(delegate)的父类(super class),您会发现它是 UIResponder。这是让对象响应和处理事件的接口(interface)。它是 UIApplication 和 UIView 的父类(super class),并为您处理大部分原始事件处理。事件在您的代码中遵循定义的路径。在最简单的情况下,触摸事件,UIApplication 从事件循环中弹出一个事件并将其传递给 UIWindow。 UIWindow 会进行 HitTest ,尝试直接投递到手指下的 UIView。它变得更加复杂,运动事件采用不同的路径,但关键是大部分原始事件处理都是由 UIKit 为您处理的。您真正需要做的就是设置您的 UIWindow 及其 rootViewController,事件将遵循特定的传递路径通过所有 UIKit 响应程序。您可以在此处详细了解响应者链 https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/event_delivery_responder_chain/event_delivery_responder_chain.html .

关于iphone - 了解 iOS 7 应用程序的应用程序流程。发射时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253554/

相关文章:

ios - swift 2.0 中的 MKMapItem 错误

ios - 使用swift 3在tableVIew中自动选择单元格

iphone - 面向 Xcode 3 用户的 Xcode 4 提示和技巧

ios - map 方向线未显示在 map 上

objective-c - 如何更改 MFMailComposeViewController 文本和按钮图像的颜色?

ios - 修复或避免默认第三方库中的内存泄漏

iPhone App 名称(跳板和目标)允许的特殊字符列表

ios - 在其 superView 内对 subview 运动进行动画处理

iphone - 在iOS App中执行Google身份验证后如何进行

ios - 在哪里为 iOS 生成 OAuth 2.0 key ?