[iOS] cxx_destruct 时 dispatch_s

2018-05-17  本文已影响54人  manajay

ARC 下 销毁一个对象, 如果执行 cxx_destruct时, 仍然有 访问其成员变量的情况,就会导致崩溃

当某个dispatch_semaphore_t正处于dispatch_semaphore_wait的时候,释放这个dispatch_semaphore_t的引用(sema = nil),将会导致崩溃
在semaphore调用dispose的时候不能让currentValue < originValue, 
如果出现就会导致指令执行错误, 系统发出sigill信号中断程序执行
导致信号量在释放的时候, currentValue为-1, 最终程序强制终止。
上一篇 下一篇

猜你喜欢

热点阅读