Main函数之前的那些事儿02:App启动速度优化

公式:App总启动时间 = main()函数之前的加载时间 + main()之后的加载时间

  • main()之前的加载时间:dylib链接动态库的时间+自身App可执行文件的加载时间
  • main()之后的加载时间:main方法执行之后到AppDelegate的didFinishLaunchingWithOptions方法执行结束前这段时间,主要是构建第一个界面,并完成渲染展示。

分析

尽量别在+load方法里搞事情,且对实现了+load()方法的类进行分析,尽量将load里的代码延后调用。

+load优化思路

more >>

Main函数之前的那些事儿01:dylb

前言:
甩几个问题出来,答案从问题开始。
1.类的+load方法系统是怎么调用的?
2.一个类+load方法系统为什么只会调用一次?为什么不能在+load方法中调用super?
3.为什么fishhook库只能hook应用挂载的外部动态库里的函数?

然后这些问题就引出了dylb这个鬼,然后就一脸懵逼了。iOS应用中可执行文件是什么?有那些是可执行文件?动态库是在程序启动后由dylb链接,那么静态库又是什么时候链接的?dylb是通过镜像的形式加载二进制文件的,镜像是什么鬼?运行时环境也是在mian之前初始化的,dylb和运行时环境有没有什么不可描述的关系?


编译-链接-运行
源文件–>编译–>目标文件–>(静态链接)链接静态库文件–>生成可执行文件
app启动–>加载可执行文件–>(动态链接)链接动态库文件–>初始化运行时环境–>main()

more >>

日常开发01:一行代码搞定全屏滑动返回手势

开发过程中我们经常会遇到这种需求,给某个页面添加全屏的滑动返回。当然iOS7之后,系统有提供一个边缘滑动返回的手势。很明显无法完成需求。产品要的是全屏。

  • 思路1:
    既然UINavigationController有提供interactivePopGestureRecognizer手势。 UIGestureRecognizer采用的是target-action。这样我们可以找到手势的target和action。然后新建一个自己的手势实例,替换为系统手势的action实现就是了。

    more >>

学习笔记01:OC的对象模型

OC作为一门面向对象语言。不管是学习阶段还是工作阶段。每天都是在和各种各样的类以及对象打交道。

什么是类?什么是对象?这是一个最初的问题。

1.什么是类?什么是对象?

对象是对客观事物的抽象,类是对对象的抽象,类是一种抽象的数据类。它们的关系是对象是类的实例,类是对象的模板。
哈。绕口令么。这个解释太官方。

关于类。我自己理解为类就是你所能看到的一切事物的特征和行为的集合的一个抽象。而对象则是某一个类(抽象)的具体实现。

more >>

Rui,<br>.....。