




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
解读iOS应用程序讲师:刘凡技术博客:新浪微博:UIApplicationMain在main.m的main函数中执行了UIApplicationMain这个方法,这是ios程序的入口点intUIApplicationMain(intargc,char*argv[],NSString*principalClassName,NSString*delegateClassName);argc、argv:ISOC标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可principalClassName:指定应用程序类,该类必须是UIApplication或其子类。如果为nil,则用UIApplication类作为默认值delegateClassName:指定应用程序类的代理类,该类必须遵守UIApplicationDelegate协议解读main函数UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate
class]));方法说明:1)
由第3个参数创建一个UIApplication对象,一个程序对应一个UIApplication对象(单例),UIApplication对象是程序的象征2)
由第4个参数创建一个UIApplication的delegate对象3)开启一个消息循环(不断地监听地一些系统事件)4)监听到相应的事件后,就会给代理发送相应的消息,应用程序启动完成后,首先会调用代理对象的application:didFinishLaunchingWithOptions:方法UIApplicationUIApplication是应用程序的核心,每一个程序在运行期必须有UIApplication(或子类)的一个实例(有且仅有一个),通过[UIApplicationsharedApplication]可以得到这个单例实例的指针UIApplication帮助管理应用程序的生命周期,而它通过delegate来履行这个任务UIApplication可以接收事件,把所有用户事件都放入队列,逐个处理,它会发送当前事件给一个合适的目标控件进行处理。它还将部分事件转给delegate对象来处理,delegate可处理的事件包括:应用程序的生命周期事件(如程序启动和关闭)、系统事件(如来电)UIApplicationDelegate在开发过程中,UIApplication是一个非常重要的全局对象。但在实际编程中我们并不直接和UIApplication对象打交道,而是和其代理打交道,它的代理必须遵守UIApplicationDelegate协议,代理提供了相关的生命周期方法来处理应用程序的系统事件ios设备的内存极其优先,如果为app分配了太多内存,操作系统会终止app的运行,在UIApplication接收到这个事件后它会调用代理的applicationDidReceiveMemoryWarning方法,代理在这个方法内可以进行释放内存的操作以防止操作系统强制终止应用程序的运行双击图标打开应用程序时播放动画的时段,应用程序是不允许交互的此时,应用程序处于未激活状态待应用程序完全显示在界面之后,才变为激活状态,允许用户交互用户按Home键时,在动画播放过程中,应用程序禁止用户交互,动画播放完成后,再真正退出到后台UIWindow控制器的视图UIApplicationDelegateios并不是多任务的操作系统,所以app很容易受到打扰。比如一个来电可能导致app失去焦点,如果这个时候接听了电话,那么app会自动终止运行还有很多其它类似的事件会导致app失去焦点app失去焦点前会调用代理的applicationWillResignActiveapp再次获取焦点时会调用代理的eActive在运行app时锁屏会调用代理的applicationWillResignActive当屏幕被解锁时,会调用代理的eActiveiOS应用程序运行流程打开程序执行main函数执行UIApplicationMain函数初始化UIApplication(并设置代理对象,开启事件循环)结束程序监听系统事件application:didFinishLaunchingWithOptions:eActive:applicationDidEnterBackground:applicationWillResignActive:applicationWillEnterForeground:applicationDidReceiveMemoryWarning:applicationWillTerminate:UIApplication代理程序加载完毕程序获取焦点程序进入后台程序失去焦点程序从后台回到前台内存警告,可能要终止程序程序即将退出工程名-Info.plist建立一个工程后,会在Supportingfiles文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,很重要,不能删除在旧版本Xcode创建的工程中,这个配置文件的名字就叫“Info.plist”
,注意开发中使用的plist文件不要使用此文件名plist文件是一个XML格式的文本文件,一般不用文本编辑器直接编辑这个文件,而是通过Xcode编辑工程名-Info.plist常见属性(红色部分是用文本编辑器打开时看到的key):Bundledisplayname(CFBundleDisplayName)-程序安装后显示的名称,限制在10-12个字符,如果超出,将被显示缩写名称Iconfile(CFBundleIconFile)-app图标名称,一般为Icon.pngBundleversion(CFBundleVersion)-应用程序的版本号,每次往AppStore上发布一个新版本时,需要增加这个版本号针对版本号,不同的公司使用的约定不同,例如:1.0
2.0
3.0软件体系结构发生重大变化时,使用1.0
1.1
1.2版本升级,小部分功能调整1.0.0
1.0.1
1.0.2通常是开发过程中的小版本号提示:大部分公司要求程序员,每天下班前必须将当天的代码提交源代码管理服务器(snv/git),而且要求提交的代码必须能够正常运行!Bundleidentifier(CFBundleIdentifier)-项目的唯一标识,部署或发布应用程序时会用到InfoPlist.strings设置Info.plist文件中本地化相关的内容,通常应用程序的显示名称通过此文件设置:"CFBundleDisplayName"
="我的应用程序";
注意:应用程序名称不要超过6个中文或者12个英文字符!工程名-Prefix.pch一般来说,可以将项目中经常用到的一些头文件放在这里来import,整个项目都可以访问这个文件的内容,这样既节省了手动添加import的时间,也有助于加速编译在这里定义的宏,整个项目都可以访问在pch文件中添加下列预处理指令,然后在项目中使用Log(…)来输出日志信息,就可以在发布应用的时候,一次性将NSLog语句移除(在调试模式下,才有定义DEBUG)#ifdefDEBUG#defineMyLog(...)NSLog(__VA_ARGS__)#else#defineMyLog(...)#endifiOS的设备及分辨率(iPhone竖屏/iPad横屏)设备分辨率横宽比iPhone3GS、iPodTouch第三代
320*4802
:
3iPhone4、iPodTouch第四代
640*9602
:
3iPhone
5640*11369
:
16iPad1、iPad2、iPadmini1024*7684
:
3iPad3和iPad4
2048*15364
:
3注意:在iOS开发中是以“点”为单位的,而不是以“像素”为单位的!iOS的设备图标文件命名及尺寸设备文件名大小iPhone3GS、iPodTouch第三代
Icon.png57*57iPhone4、iPodTouch第四代
Icon@2x.png114*114iPhone
5Icon@2x.png114*114iPad1、iPad2、iPadminiIcon-72.png72*72iPad3和iPad4
Icon-72@2x.png144*144应用程序发布图标:iTunesArtwork@2x.png尺寸:1024*1024注意:以@2x结尾的文件是支持视网膜屏幕的图片,图片尺寸要大一倍!iOS的设备启动图像命名约定设备大小启动图像文件名约定iPhone3GS、iPodTouch第三代
320*480Default.pngiPhone4、iPodTouch第四代
640*960Default@2x.pngiPhone
5640*1136Default-568h@2x.pngiPad1、iPad2、iPadmini1024*768Default-Landscape.pngiPad3和iPad4
2048*1536Default-Landscape@2x.png应用程序的完整启动过程1.点击程序图标2.执行main函数3.执行UIApplicationMain函数4.创建UIApplication对象、UIApplication的delegate对象5.开启事件循环监听系统事件6.程序加载完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法1)
创建窗口UIWindow对象2)
创建控制器对象3)
设置窗口的根控制器4)
让窗口成为主窗口、并且可见UIWindowUIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow,但可以手动创建多个UIWindowUIWindow的主要作用:提供一个区域来显示视图将事件分发给视图与UIViewController协同工作,方便完成设备方向旋转的支持UIWindow将UIView添加到UIWindow中两种常见方式:addSubview:直接将UIView添加到UIWindow中,程序负责维护UIView的生命周期以及刷新,但并不会理会UIView对应的UIViewControllersetRootViewController:自动将UIViewController对应的UIView添加到UIWindow中,同时负责维护UIViewController和UIView的生命周期UIWindow常用方法:makeKeyAndVisible:让当前UIWindow变成keyWindow,并显示出来makeKeyWindow:让当前UIWindow变成keyWindowUIViewControllerUIViewController的作用是:创建/销毁自己的UIView显示/隐藏UIView处理UIView和用户之间的交互(事件处理)“设置”应用中的界面显示过程如下:创建一个UIViewController由UIViewController创建自己的UIView(懒加载)把UIView显示到用户眼前UIViewController监听并处理UIView的事件视图控制器的view懒加载(延迟加载)1.在使用到view时,才调用控制器的loadView方法加载view2.loadView加载view的默认过程——UIViewController的默认实现1>如果nibName有值,就会加载对应的xib文件来创建view2>如果nibName没有值1)优先加载同名View.xib文件来创建view2)再加载同名ViewController.xib文件来创建view3)如果没有找到上面所述的xib文件,就会用代码创建一个透明的view注意:在loadView方法中,不应该调用super
loadView方法nib文件nib文件是iOS中用来描述视图的xml格式的文本文件,现在拓展名为xib,用InterfaceBuilder打开可以生成图形界面式的描述某书中著名的一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第7课 隋唐时期的科技与文化 教案2024-2025学年七年级历史下册新课标
- 关于创意种植产品的调查问卷
- 穿孔铝板吊顶施工方案
- 桥梁基础加固施工方案
- 2025年磷矿石行业发展趋势分析:我国磷矿石开采产能持续增长
- 2024年三季度报湖南地区A股每股经营性现金流排名前十大上市公司
- 污水处理池改造施工方案
- 山东省青岛市2025届高三上学期部分学生调研检测(1月)数学试题(解析版)
- 烤房土建施工方案
- 水电施工方案英文缩写
- 预防性侵安全教育课件
- 《钢铁是怎样炼成的》读书分享课件
- 颈椎损伤的固定与搬运操作流程课件
- 中国戏曲 昆曲学习通超星期末考试答案章节答案2024年
- 消毒隔离课件教学课件
- 中国旅游地理项目一二测试题
- 涉外法治视角下国际经贸规则形成研究
- 低空经济公司的投融资方案
- 城市停车规划规范
- 2022年集团消防技能比赛项目、规则和评分标准
- 手机维修行业中的数字转型
评论
0/150
提交评论