首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
OC-底层原理
订阅
Fade_VV
更多收藏集
微信扫码分享
微信
新浪微博
QQ
27篇文章 · 1订阅
11.iOS底层-dyld 加载流程
*对象初始化 *引导初始化。向dyld注册我们的图像通知程序。 *在库初始化时间之前由libSystem调用 加载libSystem 时系统主动调用 查看dyld 源码 这个_dyld_objc_no
ios设计模式与架构
......
GCD多线程面试案例分析与结果
sync是不会开启新的线程。 同步串行 所以会阻塞线程等待主线程中上一个任务完成后才能执行下一个任务。 dispatch_sync立马在当前线程同步执行任务,执行完毕才能往下执行。 在任务1执行过程中要执行任务2,同时任务二执行完后还有剩余的任务1接着做,但是机器的逻辑是执行1…
OC底层->多线程
可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务),并不是真的同时执行,只是在多个任务之前切换执行,一会执行a,一会执行b. 在串行队列中(不会开启新线程),在一个任务中不要同步加入新的任务,这样会产生死锁。
OC-ios多线程与线程同步方案
在线程B访问加锁,完成后解锁。 自旋锁:当线程加锁时,如果这个锁已经被其他线程锁上,会一直在等待其开锁。内部做一个while循环占用cpu资源。 简单的初始化加锁和解锁,不同的线程必须用的同一把锁才可以。 可能会出现优先级反转问题。 假设线程1的优先级高于线程2。 线程1开启任…
OC底层->atomic与读写安全
保证了set和get内部方法是安全的。 它并不能保证使用属性的过程是线程安全的,但是外部不一定保证。 如果传入的是一个串行或是一个全局的并发队列,那这个函数便等同于dispatch_async函数的效果,函数特性需要注意的。
ios计时器NSTimer、CADisplayLink、GCD计时器
运行时发现方式2创建的计时器并不能及时销毁引发了循环引用的问题。 运行时发现这样也会引发循环引用的问题。 5.ViewController调用方法。 NSTimer本质上是放到runloop中才能运行的,同时NSTimer在runloop中优先级是比较低的。 当我们定义每0.5…
IOS程序的内存布局
栈:函数调用开销,比如局部变量。分配的内存空间地址越来越小 extra_rc 第19位存放着引用计数。 has_sidetable_rc引用计数器是否过大无法存放到isa中,如果为1,那么引用计数就存放到一个叫SideTable的类的属性中。 __weak指向的内容如果被销毁了…
ios的Tagged Pointer
全局并发队列循环1000次异步任务设置name,1000次可能会同时对self.name 进行设置。 结果是第一段代码报错,第二段没有问题。 3.赋值引用计数+1。 所以这里线程可能会多次调用release。导致坏内存访问。 处理方案2 加锁解锁 。 当字符串字数较少时使用的时…
iosMRC手动计数管理
在iOS中,使用引用计数来管理OC对象的内存,基本数据类型不需要内存管理。 xxx.retainCount //查看引用计数。 替换属性 旧的先释放,新的在+1. 5.[person1 release]; // 1 [person2 release]; // 0 person类…