synchronized猎奇
阶段1 事情的起因是同事写了这样一段代码。 @synchronized(@"test synchronized"){ NSLog(@"do something"); } 于是我指出这样应该是锁不住的,因为 synchronized 锁的是对象,而每次创建的字符串都是新对象,所以锁不住。 同事跟我说,“no,no,no”,你太天真了,编译器会优化字符串,像这种写在代码里的字符串,会被放在ios包的常量字符串里,终生只有一个地址。还给我祭出了ipa包内容截图。 于是我自己写了段测试代码 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ @synchronized(@"test synchronized"){