iOS - OC基础汇总

2023-07-08  本文已影响0人  邢罗康

一、内存管理

1. 引用计数

1.1 黄金法则

1.2 引用计数存放

2. MRC

3. ARC

4. Strong

5. Weak

weak原理

6. Assign

7. Copy、MutableCopy

浅拷贝
copy出来的对象与源对象地址一致,对拷贝对象做修改会影响源对象。

深拷贝
copy出来的对象与源对象地址不一致,开辟新的内存空间存放拷贝对象,对拷贝对象做修改不会影响源对象。

声明NSString类型的属性,用copy还是strong修饰更好?
考虑多态的原因,NSString类型的属性,最终可能指向的是NSMutableString,为了防止源字符串的修改引起变化,最好是采用copy来修饰。

如何自定义cpoy操作?

8. Atomic、Nonatomic

9. 内存泄漏

是指申请的内存空间用完之后未释放,在ARC下根本原因是循环引用(在ViewController中没有正确的使用NStimerdelegateblock)引起的。

10. 循环饮用

11. 内存溢出

通俗的讲就是内存不够用了,程序申请内存空间时,没有足够的内存空间可供使用。


二、Runtime

1. Runtime:

2. id、instanceType

3. isa(is a what?)

4. 消息发送机制

在OC中,对象调用方法其实是对象接收消息,消息的发送采用“动态绑定”的机制,具体调用哪个方法直到运行时才能确定,确定后才会去执行绑定的代码

OC对象调用方法在运行时会被转化为 void objc_msgSend(id self, SEL cmd...)

5. Merhod Swizzing(方法交换)

6. Category、Extension

7. 归档解档(NSCoding)

8. KVC、KVO

8.1 KVC

是一种可以通过key来访问类属性的机制。而不是通过调用Setter、Getter方法访问。可以在运行时动态访问和修改对象的属性。

8.2 KVO

KVO(Key Value Observing):键值监听,可以监听对象某个属性值的变化


三、Block

1. Block原理

2. Block类型

3. 变量捕获

4. __block、__weak

5. weakSelf

__weak typedof(self) weakSelf = self;

四、多线程

1. 多线程

2. 队列(dispatch queue)

执行任务的等待队列,即用来存在任务的队列。队列是一种特殊的线性表,采用FIFO(first in first out)的原则。新的任务总是被插到队列的末尾,读取任务总是从队列的头部开始读取。每读取一个任务,则从队列中释放一个任务。

3. 任务

执行操作的意思,就是要在线程中执行的代码

4. 线程安全

在多线程中运行得到的结果与在单线程中运行得到的结果一致,即为线程安全

5. GCD

6. NSOperation、NSOperationQueue

7. NSThread


五、RunLoop

1. 什么是RunLoop?

2. RunLoop Mode

3. RunLoop Source

4. RunLoop Observer

5. RunLoop运行逻辑

6. 如何实现常驻线程

如果经常会在子线程中做一些耗时操作(比如下载文件、后台播放音乐等),最好能让这条线程常驻内存。


六、性能优化

1. 卡顿优化

解决卡顿的主要思路就是尽可能的减少CPU与GPU资源的消耗

1.1针对CPU

1.2 针对GPU

2. 耗电优化

3. 启动优化

3.1 热启动

app进程还在系统中,无需开启新进程的启动过程

3.2 冷启动

3.3 Mach-O

上一篇 下一篇

猜你喜欢

热点阅读