1.要创建本地仓库,将自己写的demo 都推送上去。https://github.com/GKman6657 移步git地址
2.为了避免界面在处理耗时的操作时卡死,比如读取网络数据,IO,数据库读写等,我们会在另外一个线程中处理这些操作,然后通知主线程更新界面。用GCD实现这个流程的操作比前面介绍的NSThread NSOperation的方法都要简单。
3.init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的执行顺序:
很明显,先执行init、然后执行viewDidLoad,然后是viewWillAppear最后是viewDidAppear,这样视图就创建好了,当视图消失或者被覆盖的时候:viewWillDisappear -->viewDidDisappear
这样一来视图就消失了,当模拟内存警告的时候:Received simulated memory warning. -->viewWillUnload-->viewDidUnload
当视图控制对象收到内存警告的时候,程序会执行viewWillUnload最后是执行viewDidUnload。
4.
*代码区:存放函数二进制代码
*数据区:系统运行时申请内存并初始化,系统退出时由系统释放,存放全局变量、静态变量、常量
*堆区:通过malloc等函数或new等操作符动态申请得到,需程序员手动申请和释放
*栈区:函数模块内申请,函数结束时由系统自动释放,存放局部变量、函数参数
ps: 栈和堆的不同
栈的空间由操作系统自动分配/释放,堆上的空间手动分配/释放。栈空间是有限的,而堆是很大的自由存储区。C中的malloc函数分配的内存空间是在堆上的,C++中对应的是new操作符。 程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上
网友评论