
+(ID)sharedDBHandler{ @synchronized (self) { if (sDBHandler == nil) { sDBHandler = [self new]; } } return sDBHandler;} 如果我们将nil传递给它会发生什么?
解决方法 它根本不是@synchronize().没有锁.无 *** 作.未定义的行为.完全有效的问题,顺便说一句,无论代码是否过时,不再是生成单例的正确方法.
来自github存储库.虽然没有记录在案的声明,但违反此政策会导致兼容地狱.
int objc_sync_enter(ID obj){ int result = OBJC_SYNC_SUCCESS; if (obj) { Syncdata* data = ID2data(obj,ACQUIRE); assert(data); data->mutex.lock(); } else { // @synchronized(nil) does nothing if (DeBUGNilSync) { _objc_inform("NIL SYNC DEBUG: @synchronized(nil); set a breakpoint on objc_sync_nil to deBUG"); } objc_sync_nil(); } return result;} 哪里:
BREAKPOINT_FUNCTION(voID objc_sync_nil(voID));总结
以上是内存溢出为你收集整理的objective-c – 在Objective C中,如果我们将nil或null传递给@synchronized()块会发生什么?全部内容,希望文章能够帮你解决objective-c – 在Objective C中,如果我们将nil或null传递给@synchronized()块会发生什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)