iOS程序的启动原理

agent-browser OpenClaw 的最佳搭档 agent-browser 是专为 AI Agent 设计的浏览器自动化工具,目前被公认为 OpenClaw 的最佳配套方案。这份技术文档完整记录了其架构、协议、性能调优与常见问题处理,非常适合想让OpenClaw 真正“上手”互联网的开发者与老用户。 阅读详情

说起程序的启动原理,首先要了解的是:
UIApplication
1.什么是UIApplication?
UIApplication对象是应用程序的象征,每一个应用都有自己的UIApplication对象,而且是单例,通过[UIApplication sharedApplication] 来获得这个单例对象
2.UIApplication的常见属性
① 设置应用程序图标右上角的红色提醒数字

 @property(nonatomic,assign) NSInteger applicationIconBadgeNumber;

演示:
首先要在application里面注册icon的badge的修改权限:

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[application registerUserNotificationSettings:settings];

然后再设置提醒的数字:

[UIApplication sharedApplication].applicationIconBadgeNumber = 8;

如图:

        ②设置联网指示器可见性
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
3.UIApplication的强大功能:openURL

部分功能有:
① 打电话:
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@"tel://10086"]];
② 发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];
③ 发邮件
[app openURL:[NSURL URLWithString:@"mailto://deping.liu@intel.com"]];
④ 打开网页
[app openURL:[NSURL URLWithString:@"www.baidu.com"]];
⑤ 打开其他app

然后了解的是UIApplicationDelegate
打开程序中的AppDelegate.h发现:

@interface AppDelegate : UIResponder <UIApplicationDelegate>

发现有个UIApplicationDelegate,这个是干什么的?

所有的移动操作系统都有一个致命的缺点: app很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止。

还有很多其他类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件。

① UIApplication有一个delegate属性
② UIApplication的delegate的对象必须遵循UIApplicationDelegate协议
③ UIApplicationDelegate协议可以知道程序的运行状态

//程序启动完成
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {

NSLog(@"程序启动完成");
return YES;

}

  • (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@”程序将失去焦点”);
    }

  • (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@”程序将进入后台”);
    }

  • (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@”程序将进入前台”);
    }

  • (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@”程序将出现焦点”);
    }

  • (void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@”程序结束”);
    }“

每个程序都有一个main函数,ios的main函数

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

main函数中执行了一个UIApplicationMain这个函数

int UIApplicationMain(int argc,char *argv[],NSString *principalClassName,NSString *delegateClassName);

① argc、argv:直接传递给UIApplicationMain进行相关处理即可
② principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值

③ delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议

④ UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性

⑤ 接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)

⑥ 程序正常退出时UIApplicationMain函数才返回

这里写图片描述

这就是整个的ios启动原理。

一个车载HUD的设计参考 阅读详情

相关推荐

核磁干货 | RESTplus实战:静息态fMRI预处理全流程解析

本文详细解析了使用RESTplus工具包进行静息态fMRI数据预处理的完整流程,包括数据准备、环境配置、预处理步骤及高级分析技巧。RESTplus作为基于SPM的批处理工具,以其图形化界面和智能化参数设置显著提升了核磁静息态数据分析的效率,特别适合新手和临床研究人员。文章还分享了实战中的常见问题解决方案和性能优化技巧。

wine的专栏 880

33_iOS干货21_梳理iOS程序启动的原理

一,程序启动的步骤原理: 1,打开程序--&gt; 2,执行main函数--&gt; 3,执行UIApplicationMain函数,初始化UIApplication(四个基本过程:创建UIApplication对象、设置代理、开启主运行循环、加载Info.plist文件)—&gt; 4,main.storyboard初始化用户的应用程序的用户接口(三个过程:创建窗口、设置根控制器、窗...

a_horse的博客 368

数仓项目6.0(一)

数据同步工具种类繁多,大致可分为两类,一类是以DataX、Sqoop为代表的基于Select查询的离线、批量同步工具,另一类是以Maxwell、Canal为代表的基于数据库数据变更日志(例如MySQL的binlog,其会实时记录所有的insert、update以及delete操作)的实时流式同步工具。DataX的使用,用户只需根据数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中,然后执行如下命令提交数据同步任务即可。

qq_58551342的博客 2847

iOS App启动原理

在工程中可以看到函数是程序的入口,其实在启动之前系统做了很多的工作,比如fork子进程,调用exec函数等,app的启动离不开系统内核的支持,所以在这之前需要对iOS系统架构有个基本了解Mac系统是基于内核的图形化操作系统,和系统架构层只有最上面的应用层框架部分有区别,使用的是框架, 而是框架,其余层的架构都是一样的应用层应用层基础框架核心框架层Drawin框架层 应用层: 手机上的图形应用,如,等 应用层框架: Cocoa框架,包括 Foundation,ApplicationKit,UIKit等,从功

jiodg45的博客 904

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1670

AIGC大模型应用教学平台

该平台采用最新的AI推理加速芯片,提供30Tops算力和32GB存储,能够运行常见的大语言模型如ChatGLM2、Llama2、Baicuan、Mistral等,也可以运行文生图扩散模型Stable Diffusion,提供大模型微调、量化、转换和加速推理服务。在此基础上,平台还提供常见的生成式AI应用,包括AIGC知识抽取增强(RAG)、AIGC绘画、AIGC会话聊天、数字虚拟人等应用,以便学生能够掌握最新的生成式AI模型微调、提示工程和智能体应用技能。

中智讯的博客 1203

iOS之应用程序启动过程及原理总结

当用户点击应用图标之后,应用就开始启动。应用启动完成后,就会展示一系列的视图,和用户进行各种各样的交互(如滑动、点击)。当用户退出应用后,该应用就无法和用户进行交互。这一过程就体现了一个应用的生命周期(从启动到退出)。

shxwork的博客 5253

一维光子晶体态密度计算与应用解析

态密度(DOS)是凝聚态物理和光子学中的核心概念,描述了量子态在能量空间的分布规律。基于麦克斯韦方程组的周期性介电结构分析表明,一维光子晶体通过布拉格散射形成光子带隙,其态密度曲线呈现典型的范霍夫奇点和禁带特征。这种特性使光子晶体在光学工程中具有重要价值,特别是在滤波器设计和传感器开发领域。通过转移矩阵法等数值计算手段,可以精确预测带隙位置和宽度,其中折射率对比度与周期数是关键设计参数。实际应用中,1550nm通信波段滤波器常采用Si/SiO2交替结构,而引入缺陷层则能产生高Q值缺陷模。计算优化时需注意数值

weixin_36487018的博客 193

iOS程序的启动过程及原理

话不多说。 1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicationMain函数里面做了什么事情:  1> 创建UIApplication对象 2> 创建UIApplication的delegate对象—–AppDelegate  3> 开启一个消息循环。每监听到对应的系统事件时,就会通知AppDelegate 

baidu_33793758的博客 519

谈谈SAP顾问的几个发展趋势

大家新年好,今天想聊一下对SAP顾问发展趋势的一些个人见解。过去10多年得益于我国的经济发展,外资不断加大在中国的投资和中国企业的发展,SAP顾问行业得到了很大的发展和壮大。那么未来几年SAP顾问的职业发展到底怎么样呢?

syounger的专栏 2510

Chapter 5 Gate Drivers and Level Shifters

Gate driver如下图所示, 包括功率管(带保护), Gate driver, Level shifter, Gate Supply 和Dead-time control.

2304_76736886的博客 2230

IOS程序的运行原理

IOS应用程序Main函数开始焦点解说。 1.每一个应用程序都有属于自己的UIWindow,UIWindow继承自UIView 2.UIView面临的一下问题都是控制器(UIViewController)来控制。 2.1,控制UIView之间的切换 2.2,管理UIView的生命周期 2.3, 给UIView装配参数 2.4,监听UIView的事件并相应 IOS程序的运行原理

zhyjtwgsnwxhn的专栏 554

Python爬虫实战:使用最新技术爬取新华网新闻数据

在当今信息爆炸的时代,网络爬虫技术已经成为获取互联网数据的重要手段。作为国内权威新闻媒体,新华网每天发布大量高质量的新闻内容,这些数据对于舆情分析、市场研究、自然语言处理等领域具有重要价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的新华网新闻爬虫系统。本文详细介绍了如何使用Python最新技术栈构建一个高效、稳定的新华网新闻爬虫系统。我们从基础爬虫开始,逐步添加了代理支持、用户代理轮换、请求延迟、重试机制、动态页面渲染、数据存储等高级功能,最终实现了一个生产可用的分布式爬虫系统。

2201_76125261的博客 1770

ios程序启动原理

ios程序启动原理标签(空格分隔): ios进阶Info.plist和pch文件的作用Info.plist- 建立一个工程后,会在Supportingfiles文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除- 在旧版本Xcode创建的工程中,这个配置文件的名字就叫“Info.plist”项目中其他Plist文件不能带有“Info”这个字眼,

maomaopanjiu的博客 550

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS程序启动程序原理

iOS(程序启动程序原理)新建一个工程选择Single View Application(单视图控制器)程序开始main.m #import <UIKit/UIKit.h> #import "AppDelegate.h"int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain

qq_27699233的博客 254

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

iOS程序启动原理

原 (上) 发表于2年前(2014-05-25 11:00)   阅读(2732) | 评论(0) 6人收藏此文章, 我要收藏 赞0 摘要 本文介绍iOS程序中的Info.plist,pch文件,UIApplication,openURL以及UIWindow的常用属性及方法; Info.plist pch文件 UIApplication openURL UIWindow

justforever_zz的博客 305

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

iOS UIApplication 和delegate以及程序启动原理

int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); //NSStringFromClass好处 //1.不会写错 ...

qq_28285625的博客 315

iOS基础 - iOS程序启动原理

一、UIApplicationMain 在main.m的main函数中执行了UIApplicationMain这个方法,这是ios程序的入口点 int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName) argc、argv:ISO C标准mai

491

iOS开发UI篇—程序启动原理和UIApplication

iOS开发UI篇—程序启动原理和UIApplication 一、UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。 (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。 (3...

a359798678的博客 66

iOS 程序启动原理和UIApplication

一、UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。 (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。 (3)通过[UIApplicationsharedApplication]可以获得这个

江湖两把刀的技术博客 1550

iOS程序启动的原理介绍

一、程序启动的流程图如下: 1,打开程序--&gt; 2,执行main函数--&gt; 3,执行UIApplicationMain函数,初始化UIApplication(四个基本过程:创建UIApplication对象、设置代理、开启主运行循环、加载Info.plist文件)—&gt; 4,main.storyboard初始化用户的应用程序的用户接口(三个过程:创建窗口、设置根控制器、...

阳光男孩阚少的博客 402

iOS -程序启动原理和UIApplication的介绍

一.UIApplication 简介 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。 (2)每一个Application都有自己的UIApplication对象,而且是单例的,如果用试图再去实例化一个UIApplication则会报错:[ [ UIApplication alloc ] init ];。 ...

dianyao5745的博客 179

iOS的常见文件及程序的启动原理

一. iOS中常见文件 (一). Xcode6之前 创建项目,默认可以可以看见一个存放框架的文件夹 info.plist文件以工程文件名开头,如:第一个项目-Info.plist 项目中都有一个PCH文件 (二). Xcode6之后(包括Xcode6) 创建项目,没有框架文件夹,使用时系统才去加载 info文件不以工程文件名开头,如:Info.plist 项目中没有一个PCH文件

诠释完美 3940

IOS程序启动原理

一、第一步先要看一张图,这张图就是IOS程序的启动过程     UIApplicationMain •main函数中执行了一个UIApplicationMain这个函数 •int UIApplicationMain(int argc, char *argv[], NSString*principalClassName, NSString *delegateClassN

kai46385076的专栏 610

iOS-程序启动原理和UIApplication

iOS开发UI篇—程序启动原理和UIApplication 一、UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。 (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。 (3)通过[U...

weixin_30847939的博客 116

iOS 程序启动原理

  很多工作一段时间的iOS程序员,总是每天沉浸在代码里,大家总是按照xcode的规定生成项目,然后就开始码代码了,但是大家知道app背后的启动过程吗?当点击程序图标启动程序开始到退出,程序在运行过程中到底执行了哪些代码?只有理解了这个才能游刃有余的掌握iPhone程序的开发。   程序启动的完整过程 1.main函数 2.UIApplicationMain.创建UIApplic...

anyang88188的博客 156
上一篇: Undefined symbols for architecture i386:和"_OBJC_CLASS_$_xx", referenced from:问题解决方法
下一篇: 面试题:程序启动原理
大胖子runner
博客等级 码龄11年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值