
objc
rhythmkay
这个作者很懒,什么都没留下…
展开
-
关于ARC与NSInvocation的一个问题
涉及二级指针/void传参的函数调用要特别留意引用计数管理的问题,因为二级指针/void传参是不涉及自动引用计数管理的,所以需要自己在合适的平衡引用计数关里。文章目录一、问题二、分析三、结语一、问题给定如下代码@implementation TestHelper- (NSString*)stringObjects{ NSMutableString *s = ...原创 2019-01-18 14:35:13 · 339 阅读 · 0 评论 -
不安全的weak变量
对于存在多线程释放并且并发访问的对象,不建议使用weak修饰或访问。因为weak的底层实现并不完全是线程安全,否则较容易导致over-release而crash。一、问题每次版本升级初期总是有少部分会遇到如下的crash虽然量很少,但总是有也很是烦人。没办法只能看下到底是怎么回事。二、问题描述很明显,这是一个over-release的问题;挂在objc_release里;业务代码如下...原创 2019-01-18 14:39:57 · 1556 阅读 · 2 评论 -
关于block嵌套定义导致的内存泄漏
block的使用极大方便了我们的开发,但是不正确的使用block时就会导致意想不到的问题。文章目录1. 单层block2. 嵌套的block3. 为什么4. 结论1. 单层blockdispatch_async(dispatch_get_main_queue(), ^{ [self stopCaptureAfer] ; });如上代...原创 2019-01-18 14:46:11 · 566 阅读 · 0 评论 -
__block不适合多线程并发
objc的很多设计,从底层实现上都不完全是线程安全的,这也导致在一些极端的并发情况下,会引起竞争导致的内存访问错误问题。之前分析过_weak的设计不是多线程安全的,最近又踩坑了_block,发现这个居然也不是线程安全。当然这也不是说 _block, _weak 这些不要用了,而是说在比较频繁创建释放且有多线程使用的情况下,不要用 ___block, _weak修饰,因为他们的确不是线程安全的...原创 2019-04-24 21:07:47 · 1166 阅读 · 0 评论