iOS 开发整理

2019-11-22  本文已影响0人  羽裳有涯

1、理解内存管理

引用计数:

  • 是一个简单而有效的管理对象生命周期的方式;
  • 当对象的引用计数变为0时,说明这个对象不再被任何指针指向了,这个时候我们就可以将对象销毁,回收内存。

由于引用计数简单有效OC 、Swift、微软的COM(component Object Model)C++11等引用计数的内存管理方式。
ARC(Automatic Reference Count)自动引用计数

循环引用(reference cycles)问题

Core Foundation 对象的内存管理
__bridge: 只做类型转换,不修改相关对象的引用计数
__bridge_retained:类型转换后,将相关对象的引用计数加1
__bridge_transfer:类型转换后,将该对象的引用计数交给ARC管理。

2、GCD(Grand Central Dispatch)

其他多线程方案,如NSThred、NSOperationQueue、NSInvocationOperation

3、UIWindow

UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal;  0
UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert; 2000
UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar  1000

CoreText

CoreText是用于处理文字和字体的底层技术
Quartz是一个2D图形渲染引擎,能够处理iOS和OSX中的图形显示问题。

isa指针

类的成员变量


下图,通过修改该指针指向的指针的值,就可以动态的为某一个类增加成员方法。这也是Category实现的原理

通过objc_setAssociatedObject 和objc_getAssociatedObject 方法可以变相的给对象增加成员变量,但由于实现机制不一样,所以并不是真正改变对象的内存结构。

因为isa本身也只是一个指针,所以除了对象的方法可以动态修改外,也可以在运行时动态的修改isa指针的值,达到替换对象整个行为的目的。

对象模型的应用

动态创建对象 :我们可以使用Objective-C语言提供的与runtime相关的函数,动态的创建一个新的类,并且通过相关的方法来获取isa指针的值,从而了解对象的内部结构





系统相关API及应用

isa swizzling 的应用


Tagged Pointer

深入理解Tagged Pointer

Block对象模型

上一篇 下一篇

猜你喜欢

热点阅读