首页 > 其他分享 >iOS 应用是如何创建的

iOS 应用是如何创建的

时间:2023-06-22 11:32:41浏览次数:47  
标签:创建 iOS 指定 window delegate 应用 UIApplication 加载

iOS app life cycle 生命周期图

iOS 应用是如何创建的_iOS

 

第一步: Main

有C相关语言开发经验的朋友都知道,所有程序运行都是从 main 程序开始的。

#import <UIKit/UIKit.h>
#import "NoteNavAppDelegate.h"
int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([NoteNavAppDelegate class]));
    }
}

第二步:UIApplicationMain

UIApplicationMain 到底为我们做了什么事情?

2.1、创建了UIApplication的实例。
每一个应用程序都有一个UIApplication或其子类型的实例。当程序被加载,函数方法UIApplicationMain就被调用执行,它创建了单件模式的UIApplication对象。
2.2、在 Info.plist 文件中寻找初始化需要的一些元素,这个文档包含了程序需要初始化的一些元素比如:icon、名称、指定主界面的nib文件等等。
其中的 NSMainNibFile => MainWindow 指向主界面。


iOS 应用是如何创建的_iOS_02

第三步:主界面

主界面nib页面又给我们指定了什么东西呢?

3.1、File’s Owner 表示当前nib文件的使用者可以看到是UIApplication
3.2、First Responder 可以用于处理很多事件.句柄
3.3、还指定了 application’s delegate
3.4、A window 用于显示程序加载背景.  UIWindow class提供了一个container for views的管理和显示。

iOS 应用是如何创建的_iOS_03

 

下面是一个具有导航的Main Nib 文件的引用关系。

iOS 应用是如何创建的_iOS_04

 

第四步:UIApplication加载结束后

接下来处理的关键在于3.3所指定的delegate

当UIApplication加载结束后,会给它所指定的delegate发一个application:didFinishLaunchingWithOptions: 事件消息.
然后在这个方法里面创建自己的view controlle以及给主window指定subview.

接下来的事情就是由程序员自己编程控制了。

 

 

 

从MVC的角度看 iOS 的那些类

 

iOS 应用是如何创建的_加载_05

 

 

iOS的消息流转流程

iOS 应用是如何创建的_加载_06

 

 

参考资料:

IPHONE基于窗口应用程序的生死
http://guogoul.com/2010/10/29/iphone-window-based-applicatio/

iOS: some notes

标签:创建,iOS,指定,window,delegate,应用,UIApplication,加载
From: https://blog.51cto.com/u_15588078/6534489

相关文章

  • XCode 4.3.2 如何新建 Window-based Application应用的简单例子
    XCode4以后,项目模版中没有了Window-basedApplication,跟它比较接近的项目模版是EmptyApplication.如下图的选择:我们想建一个Window-basedApplication,需要在EmptyApplication基础上做一些设置。下面是操作步骤,新建一个EmptyApplication默认的EmptyApplication项目包......
  • STATA egen应用
    clearinputxx123456endsavelin1,replace//形成新变量yy,为指定变量xx的标准化(均值为0,方差为1)的分值egenyy=std(xx)//形成新变量xz1,为指定变量xyzw四个变量忽略任何缺失值的行的平均值genx=1geny=2genz=.genw=3//第6行有两个缺失值,则结果为1+2/2=1.5e......
  • vue+axios实现token无感刷新
    原文出处:https://www.jb51.net/javascript/286094r4h.htm 通常,对于一些需要记录用户行为的系统,在进行网络请求的时候都会要求传递一下登录的token。不过,为了接口数据的安全,服务器的token一般不会设置太长,根据需要一般是1-7天的样子,token过期后就需要重新登录。不过,频繁的登录会......
  • 全球溯源中心系列成果发布,巨杉数据库积极参与溯源产业应用生态
    巨杉数据库作为溯源+数据库技术应用企业,凭借多年深耕文档型分布式数据库的技术积累和创新能力,受邀参与全球溯源中心标准系列成果发布及溯源产业应用启动仪式。6月19日,“链接世界预鉴未来”——全球溯源中心系列成果发布活动在广州南沙成功举办。巨杉数据库作为溯源+数据库技术应......
  • TiDB简介与应用场景
    引言在当今互联网时代,数据的规模和复杂性不断增长,传统关系型数据库面临着无法满足高并发和大规模数据存储需求的挑战。为了解决这一问题,开源社区涌现出了一系列分布式数据库解决方案,其中TiDB作为一种新兴的分布式数据库引起了广泛的关注。本文将介绍TiDB的基本概念、特点以及适用......
  • FPGA加速技术在人机交互界面中的应用及优化
    目录引言随着人工智能、云计算、大数据等技术的发展,人机交互界面的重要性也越来越凸显。作为用户与计算机之间的桥梁,人机交互界面的性能和效率直接影响用户的体验和使用效果。为了优化人机交互界面的性能,我们需要考虑很多因素,其中FPGA加速技术是一个比较新兴的话题。在本文中,......
  • 模型剪枝在大规模数据集处理中的应用:让数据处理更高效、更快速
    目录引言随着机器学习和深度学习应用的不断发展,大规模数据的处理变得越来越重要。然而,这些数据往往包含大量的特征和噪声,使得模型的训练和评估面临着巨大的挑战。为了提高模型的效率和准确性,模型剪枝(ModelSelection)成为了一个必不可少的工具。本文将介绍模型剪枝在大规模数......
  • 基于Node.js的分布式应用程序架构设计与最佳实践:实现高效、可扩展的分布式系统
    目录基于Node.js的分布式应用程序架构设计与最佳实践:实现高效、可扩展的分布式系统随着互联网的普及和发展,分布式系统已经成为现代应用程序中不可或缺的一部分。而Node.js作为当前最流行的JavaScript框架之一,其在分布式系统中的使用和优化也越来越广泛。在本文中,我们将介绍基......
  • 基于机器学习的智能家居场景应用
    目录1.引言2.技术原理及概念3.实现步骤与流程4.应用示例与代码实现讲解5.优化与改进6.结论与展望智能家居是近年来快速发展的领域,随着人工智能技术的发展,智能家居场景应用也越来越广泛。本文将介绍基于机器学习的智能家居场景应用,旨在为读者提供深入的思考和见解。1.引言......
  • 智能安全应用案例:打造智能安全新体验
    目录智能安全应用案例:打造智能安全新体验随着人工智能技术的不断发展,智能安全也越来越受到人们的关注。智能安全是指借助人工智能技术对智能系统进行安全保护的一种技术。本文将介绍一种智能安全应用案例,以展示智能安全的重要性和价值。背景介绍随着大数据和云计算技术的普及,......