程序的执行流程

一.自定义视图

自定义UILebal-UITextField视图

⾃定义视图:系统标准UI之外,⾃己组合而出的新的视图。

实际开发中,我们还需⾃定义视图。积累⾃己的代码库。⽅便开发。 ⾃己封装的视图,能像系统UI控件一样,⽤于别的项目中,能⼤大降 低开发成本,提⾼开发效率。

自定义视图步骤

根据需求的不同,⾃定义视图继承的类也有所不同。⼀般⾃自定义的视图会继承于UIView。以下是⾃定义视图的要点:

1、创建⼀个UIView子类

2、在类的初始化方法中添加子视图

3、类的.h⽂文件提供一些接口(方法),便于外界操作子视图

高质量代码特点:可复用,可移植,精炼等  自定义视图使用了一种设计模式--组合设计模式   iOS新控件往往都是由已有控件组合而成

二.iOS程序启动流程

main函数是程序入口

任何⼀个程序,无论是基于Mac OS还是iOS,程序都是从main.m文

件的main函数开始执行的。

int main(int argc, char * argv[])

{

@autoreleasepool {

return UIApplicationMain(argc, argv, nil,

NSStringFromClass([AppDelegate class]));

}

}

执⾏UIApplicationMain函数时做了跳转,转到了AppDelete中 
 UIApplicationMain 

UIApplicationMain在程序⼊口函数main函数中调⽤,主要实现了3个功能:

创建应用程序(UIApplication)实例

创建应⽤程序代理实例

建⽴事件循环(runloop:死循环,不断检测程序运⾏状态,是否被触 摸、晃动等)

 UIApplicationMain  剖析

int UIApplicationMain (

int argc,

char *argv[],

NSString *principalClassName,

NSString *delegateClassName

);

1、principalClassName:应用程序对象的类名(UIApplication或其⼦子类)

2、delegateClassName:应⽤程序delegate的类名。(任何接受了 UIApplicationDelegate的类)

UIApplicationMain根据上述两个类名创建应⽤程序实例、应⽤程序代理实例。

然后建⽴事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触摸等)

应用程序代理

应⽤程序代理,主要检测应用程序的状态并做出相应的处理。

应⽤程序的状态有很多,比如:程序启动、进⼊活跃状态、进到后台、内存警告、收到远程消息等等

任何接受了UIApplicationDelegate协议的对象都可以成为应用程序 代理。

⼀旦应用程序的某种状态触发,就会执⾏相应的代理方法

UIApplicationDelegate

UIWindow

UIWindow作为应用程序的窗⼝,在应⽤程序启动的时候就要加载,

各种UI界面都是借助window来呈现的。 UIWindow在创建的时候,应该和屏幕一样大。

通过[UIScreen mainScreen].bounds可以获得屏幕⼤小。

[self.window makeKeyAndVisible];//让window变的可视,即显⽰ window

最新文章

  1. MineCraft note
  2. 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定
  3. 自动生成Mapper和Entity工具MybatisGenerator的使用
  4. iOS 7中实现模糊效果
  5. 关于runtime
  6. python 将数据随机分为训练集和测试集
  7. c++常用的一些库函数、常量和头文件
  8. SQL注入实验,PHP连接数据库,Mysql查看binlog,PreparedStatement,mysqli, PDO
  9. OK335xS ethtool 移植
  10. Jsp中的EL表达式
  11. EclipseEE导入项目出现的那些问题
  12. Java创建对象的几种方式
  13. Hibernate学习--hibernate延迟加载原理(动态代理)
  14. Spring第二篇【Core模块之快速入门、bean创建细节、创建对象】
  15. 生物结构变异分析软件meerkat 0.189使用笔记(二)
  16. MySQL之数据的简单查询
  17. Tomcat configuration DataSource
  18. Java发布webservice应用并发送SOAP请求调用
  19. Nginx访问控制
  20. Linux 创建交换分区扩展虚拟内存

热门文章

  1. 利用dispatch_once创建单例
  2. cmd命令行中的errorlevel和延迟赋值
  3. Hibernate中的多对多映射
  4. hdu 1035 (usage of sentinel, proper utilization of switch and goto to make code neat) 分类: hdoj 2015-06-16 12:33 28人阅读 评论(0) 收藏
  5. powershell玩转litedb数据库
  6. Android TextView多行垂直滚动
  7. RPI学习--环境搭建_更新firmware
  8. initWithFrame 和 initWithCoder
  9. hashmap和hashtable,arraylist和vector的区别
  10. operation not possible due to RF-kill