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"){
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android性能:通过Choreographer检测UI丢帧和卡顿
Android性能:通过Choreographer检测UI丢帧和卡顿 Android系统每隔16ms重绘UI界面,16ms是因为Android系统规定UI绘图的刷新频率60FPS。Android系统每隔16ms,发送一个系统级别信号VSYNC唤起重绘操作。1秒内绘制UI界面60次。每16ms为一个UI界面绘制周期。 平常所说的“丢帧”情况,并不是真的把绘图的帧给“丢失”了,也而是UI绘图的操作没有和系统16ms的绘图更新频率步调一致,开发者代码在绘图中绘制操作太多,导致操作的时间超过16ms,在Android系统需要在16ms时需要重绘的时刻由于UI线程被阻塞而绘制失败。如果丢的帧数量是一两帧,用户在视觉上没有明显感觉,但是如果超过3帧,用户就有视觉上的感知。丢帧数如果再持续增多,在视觉上就是所谓的“卡顿”。 丢帧是引起卡顿的重要原因。在Android中可以通过Choreographer检测Android系统的丢帧情况,以作为进一步分析卡顿的基础: package zhangphil.test; import android.os.Bundle; import android.supp...
- 下一篇
ios 中的 .h 和.m文件
没接触过ios的原生开发,对这个有点不解。 下面来了解下: 新建一个类 这个类继承 NSObject的类,就会创建出这样两个文件 image.png image.png image.png image.png 在.h文件中 有一个import,这是用来导入工具包,就是foundation框架 @这个标志表示你使用的是object-c语言 @interface 是声明类的关键字 tongdun是类名 : 冒号表示继承,oc中是单继承模式 NSObject是父类 在@interface和@end之间是用来声明属性和方法的 在.m文件中声明的属性是无法被外界看到的,所以也成为私有属性,而在.h中的属性就是public属性 在.m文件中 #import ”tongdun.h“ 用来导入.h中声明的属性和变量 @implementation tongdun implementation是实现类的关键字 学会建类之后,接下来就可以 学习下 如何写ios和RN的交互类。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19