- 控件的两种创建方式
- 通过代码创建
• 初始化时一定会调用initWithFrame:方法 - 通过xib\storyboard创建
•初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
•初始化完毕后会调用awakeFromNib方法
5.设备分辨率(由于自己有时候会忘记,方便自己查看)
6.内存分区
栈:用来保存局部变量,它的内存是由系统管理的
堆:用来存储对象的,它是由程序员管理的
全局区:用来存放全局变量与静态变量的
常量区:用来存放常量的,只读的
代码区:用来存放代码,只读的
7.const关键字
const修饰普通变量说明这个变量是只读的
修饰数组说明数组中元素是只读的
修饰指针
const在前面,说明指针所指向的存储空间是只读的
在后面,说明指针的指向是不可以修改的
const用来形参
1)函数内部不能修稿函数外部的变量值
2)告诉函数的调用者可以放心吧数据传人 我不会修改你的内容
8枚举的使用场景:当某个东西只有那么几个取值时候就使用枚举
9.单例
概念:整个应用程序只有一份内存,并不会分配很多内存
1.不能调用外界alloc,一调用就奔溃,其实就是抛出异常。第一次调用alloc就不会崩溃,其他都崩溃
2.提供一个方法给外界获取单例
3.内部创建一次单例,什么时候创建,程序启动的时候就创建单例
单例的使用:
1声明一个静态变量去保存类的实例,确保它在类中的全局可用性
2声明一个静态变量dispatch_once_t,它确保初始化代码只执行一次,
懒加载
1.作用:
1>用到的时候再加载
2>全局只会被加载一次
3>全局都可以使用
过程:
1.重写成员变量的get方法
2.在get方法中判断:
1>如果为空,加载数据
2>如果不为空,就直接返回数据
实例方法和类方法创建的区别:
实例方法:会直接创建线程并且开始运行线程
类方法:先创建线程对象,然后再运行线程操作,在运行线程前可以设置线程的优先级等线程信息