底层-内存管理

2020-01-10  本文已影响0人  Stago

CADisplayLink、NSTimer使用注意

GCD定时器

iOS程序的内存布局

Tagged Pointer

  • iOS平台,最高有效位是1(第64bit)
  • Mac平台,最低有效位是1

判断是否为Tagged Pointer

面试题

OC对象的内存管理

  • 当调用alloc、new、copy、mutableCopy方法返回了一个对象,在不需要这个对象时,要调用release或者autorelease来释放它
  • 想拥有某个对象,就让它的引用计数+1;不想再拥有某个对象,就让它的引用计数-1
extern void _objc_autoreleasePoolPrint(void);

copy和mutableCopy

引用计数的存储

dealloc

dealloc
_objc_rootDealloc
rootDealloc
object_dispose
objc_destructInstance、free

自动释放池

  • clang重写@autoreleasepool
  • objc4源码:NSObject.mm

AutoreleasePoolPage的结构

Runloop和Autorelease

上一篇 下一篇

猜你喜欢

热点阅读