iOS开发 - App程序启动原理
Info.plist和pch文件的作用
建立一个project后,会在Supporting files目录下看到一个“project名-Info.plist”的文件,该文件对project做一些执行期的配置。很重要,不能删除
在旧版本号Xcode创建的project中。这个配置文件的名字就叫“Info.plist”
项目中其它Plist文件不能带有“Info”这个字眼,不然会被错觉得是传说中很重要的“Info.plist”
项目中另一个InfoPlist.strings的文件,跟Info.plist文件的本地化相关
Info.plist
//常见属性(红色部分是用文本编辑器打开时看到的key)
Localiztion native development
//本地化相关
region(CFBundleDevelopmentRegion)
//程序安装后显示的名称,限制在10-12个字符,假设超出,将被显示缩写名称
Bundle display name(CFBundleDisplayName)
//app图标名称,一般为Icon.png
Icon file(CFBundleIconFile)
//应用程序的版本号号,每次往App Store上公布一个新版本号时,须要添加这个版本号号
Bundle version(CFBundleVersion)
//主storyboard文件的名称
Main storyboard file base name(NSMainStoryboardFile)
//项目的唯一标识,部署到真机时用到
Bundle identifier(CFBundleIdentifier)
pch文件
项目的Supporting files目录以下有个“project名-Prefix.pch”文件,也是一个头文件
pch头文件的内容能被项目中的其它全部源文件共享和訪问
一般在pch文件里定义一些全局的宏
在pch文件里加入下列预处理指令。然后在项目中使用Log(…)来输出日志信息,就能够在公布应用的时候。一次性将NSLog语句移除(在调试模式下,才有定义DEBUG)
#ifdef DEBUG
#define Log(...) NSLog(__VA_ARGS__)
#else
#define Log(...) /* */
#endif
UIApplication的常见使用
UIApplication对象是应用程序的象征
每个应用都有自己的UIApplication对象。并且是单例的
通过[UIApplication sharedApplication]能够获得这个单例对象
一个iOS程序启动后创建的第一个对象就是UIApplication对象
利用UIApplication对象,能进行一些应用级别的操作
//设置应用程序图标右上角的红色提醒数字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
//设置联网指示器的可见性
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
假设想利用UIApplication来管理状态栏。首先得改动Info.plist的设置
iOS7中的状态栏
从iOS7開始,系统提供了2种管理状态栏的方式
通过UIViewController管理(每个UIViewController都能够拥有自己不同的状态栏)
通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
在iOS7中。默认情况下。状态栏都是由UIViewController管理的,UIViewController实现下列方法就能够轻松管理状态栏的可见性和样式
//状态栏的样式
- (UIStatusBarStyle)preferredStatusBarStyle;
//状态栏的可见性
- (BOOL)prefersStatusBarHidden;
openURL:
UIApplication有个功能十分强大的openURL:方法
- (BOOL)openURL:(NSURL*)url;
openURL:方法的部
iOS开发 - App程序启动原理的更多相关文章
- iOS app 程序启动原理
iOS app 程序启动原理 Info.plist: 常见设置 建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件, ...
- iOS APP程序启动原理
UIApplication 程序启动原理 一个应用程序运行就必须要有一个进程,一个进程至少要有一个线程,我们把这个线程叫做主线程,主线程开启之后会开启一个主运行循环,如果不开启一个运行循环,程序开启了 ...
- 详解 IOS 7.1 程序启动原理
程序都是从Main方法入口的 IOS 也不例外 int main(int argc,char * argv[]) { @autoreleasepool { return UIApplicationMa ...
- iOS程序启动原理---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...
- [转]iOS hybrid App 的实现原理及性能监测
转自:http://www.cocoachina.com/ios/20151118/14270.html iOS hybrid App 的实现原理及性能监测 2015-11-18 11:39 编辑: ...
- iOS中的应用启动原理
iOS中的应用启动原理 来源: http://m.blog.csdn.net/article/details?id=50530090 http://m.warting.com/program/2016 ...
- iOS开发人员程序许可协议
请细致阅读以下的许可协议条款和条件之前下载或使用苹果软件. 这些条款和条件构成你和苹果之间的法律协议. iOS开发人员程序许可协议 目的 你想使用苹果软件(例如以下定义)来开发一个或多个应 ...
- iOS开发app启动原理及视图和控制器的函数调用顺序
main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数.在Unix中exec和system的不同在于,system是用shell来调用程序,相当于fork+exec+waitpi ...
- iOS开发——UI进阶篇(七)程序启动原理、打电话、发短信
一.Info.plist常见的设置 1.建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 ...
随机推荐
- Java列出接口实现的所有接口
package com.tj; public class MyClass2 { public static void main(String[] args) { Class cls = java.ut ...
- Java-计算程序运行时间
package com.tj; @SuppressWarnings("unused") public class CountTime { public static void ma ...
- Android App性能自动化评测方法
前言 App运行在设备上的性能表现也是质量保障的一个重要环节.因此,当我们确保了基本功能的准确之后,还需要有一定的方法评测App在不同设备上的性能表现.本文将从性能指标,评测方法,自动化体系建设等三个 ...
- .net提高文章
文章:.NET程序性能的基本要领 文章:你的字典里有多少元素? 文章:快速自检电脑是否被黑客入侵过(Windows版) 文章:关于DNS,你应该知道这些
- Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"
在iOS上开发视频操作的时候,出现错误: 录制视频错误:Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成" Us ...
- PAT天梯赛练习题——L3-008. 喊山(邻接表+BFS)
L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂 ...
- BZOJ 3282 Tree ——Link-Cut Tree
[题目分析] 明显的LCT维护连通性的题目. access的操作是比较巧妙的,可以把结点到根变成偏爱路径,而且保证了该点是链上深度最深的点. 而且需边的思想也很巧妙,保证了复杂度. 但是只能用于修改路 ...
- 刷题总结——道路覆盖(ssoj)
题目: 题目描述 Tar 把一段凹凸不平的路分成了高度不同的 N 段(每一段相同高度),并用 H[i] 表示第 i 段高度.现在 Tar 一共有 n 种泥土可用,它们都能覆盖给定的连续的 k 个部分. ...
- 算法复习——树链剖分模板(bzoj1036)
题目: 题目背景 ZJOI2008 DAY1 T4 题目描述 一棵树上有 n 个节点,编号分别为 1 到 n ,每个节点都有一个权值 w .我们将以下面的形式来要求你对这棵树完成一些操作:I.CHAN ...
- java面试题之什么是死锁、活锁、饿死和竞态条件?
死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去: 活锁:是指两个线程优先级相同,都礼让不走,就这样一直僵持下去: 饿死:在 ...