首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Samcooke
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
17
文章 17
沸点 0
赞
17
返回
|
搜索文章
最新
热门
多线程(二)、线程安全
目前已经不再安全,可能会出现优先级反转问题。 如果等待锁的线程优先级较高,它会一直占用着CPU资源,优先级低的线程就无法释放锁。 每个线程访问的锁必须是同一把锁。线程1进来访问这把锁,发现没有加锁,然后加锁-->处理业务-->解锁,这时线程2进来访问这把锁,发现已加锁,就处于忙…
多线程(一)、GCD
NSThread、GCD、NSOpration都是对pthread进行封装。 同步:发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 异步:调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。 串行:排队执行。Serial interview…
Runloop(三)、Runloop应用
会发现,当滚动TextView时,定时器停止滚动。 scheduled安排。scheduledTimer开头的,这种定时器安排好了,会将NSTimer对象添加到默认模式下工作。滚动的时候切换到其他模式了,退出默认模式了,所以会停止滚动。 如果传的参数是NSRunLoopComm…
Runloop(二)、源码
Runloop很多API,最终会调一些很长的函数。比如__CFRunLoopDoObservers最终会调如下图: GCD不依赖Runloop,GCD很多操作自己处理,只不过有些情况会交给Runloop处理。如下:
Runloop(一) 基本概念
Runloop保存在一个全局的Dictionary里,线程作为key,Runloop作为value. 主线程的Runloop已经自动获取(创建),子线程默认没有开启Runloop。 CFRunLoopGetCurrent()和[NSRunLoop currentRunLoop]…
Runtime(七)、runtime应用
object_setIvar(person, ageIvar, (__bridge id)(void *)10); 这个方法传的值,必须是OC类型。当成员变量是基本类型时,比如这里是int类型,不能是NSNumber类型@(10),必须用 void *并桥接成OC类型。不能用i…
Runtime(七)、runtime应用
object_setIvar(person, ageIvar, (__bridge id)(void *)10); 这个方法传的值,必须是OC类型。当成员变量是基本类型时,比如这里是int类型,不能是NSNumber类型@(10),必须用 void *并桥接成OC类型。不能用i…
推送
环信推送,当App被杀死走APNS远程推送,当App在后台活跃或者App在前台,走的是长链接。 环信推送,类似微信。本质上还是聊天。无法像极光那样,给所有设备发送。极光推送,不管是App被杀死,还是App在前台或者后台都能实现远程推送。 本质上是发消息,只有登录才能收到。极光可…
Runtime(六). superClass的本质
把这个MJStudent.m 转化为 cpp. 可知(搜索MJStudent_run) 调objc_msgSendSuper.第一个参数为一个结构体,结构体第一成员是接收者,第二个成员是父类类对象。 所以 [super class] 打印结果是 MJStudent; [supe…
property,synthesize,dynamic
property做的事情。 生成 @synthesize age = _age. 注意:只生成setter,getter方法的声明,成员变量也不生成。
下一页
个人成就
文章被点赞
11
文章被阅读
22,342
掘力值
619
关注了
11
关注者
5
收藏集
0
关注标签
8
加入于
2018-06-13