看开源的objc源码有class的方法
+ (Class)class {
return self;
}
- (Class)class {
return object_getClass(self);
}
然后明白object_getClass是获取isa,其实object_getClass(obj)与[obj class]的区别了,就两点:
1、如果是obj实例对象,他们一样;
2、如果是类对象,class是self,object_getClass是isa
看开源的objc源码有class的方法
+ (Class)class {
return self;
}
- (Class)class {
return object_getClass(self);
}
然后明白object_getClass是获取isa,其实object_getClass(obj)与[obj class]的区别了,就两点:
1、如果是obj实例对象,他们一样;
2、如果是类对象,class是self,object_getClass是isa
layer的光栅化可以将绘制完的位图缓存下来以减少GPU压力,在合适的时机使用效果十分显著layer.shouldRasterize = true 关于光栅化的基础知识不了...
在iOS11, iOS12上UITextView会有个奇怪的动画👇 这个动画看起来很难受,特别是文本比较多的时候,所以还是把它去除掉吧👇 解释: 在合适的地方去实现一下UIT...
Runtime系列文章 Runtime原理探究(一)—— isa的深入体会(苹果对isa的优化)Runtime原理探究(二)—— Class结构的深入分析Runtime原...
id objc_msgSend(id theReceiver, SEL theSelector, ...) id objc_msgSendSuper(struct objc_...
这个系列文章一共有10篇, 涵盖了GCD和Operation的使用和注意点。 前置知识: Swift 适读人群: 对多线程开发只知其名 知道多线程但不了解细节 不了解Oper...
Thread Sanitizer(TSan, 线程消毒剂🤔?), 是LLVM里Apple提供检测多线程开发中可能存在的资源竞争情况的工具。不过它只能在模拟器上运行。 除了TS...
在诸如用户离开当前页面的情况下,还没有完成的网络加载可能就不需要继续完成了,这时候就可以通过cancel来取消正在进行中的Operaiton了 被cancel的Operati...
Dependency可以实现 Operation等待先决条件达到再运行 Operation从其它Opration拿到值而且Operation的多任务依赖会比GCD的代码更简洁...
在上一篇例子中我们实现的是Operation是同步的,本篇将着重介绍异步实现。 Operation的状态是完全由底层自动管理的只读属性,正常情况下,Operation在结束m...
Operation支持以下三种添加任务的方式 传Operation 传闭包 传Operation数组 Operation管理 OperationQueue会根据QoS优先级以...
从使用场景来说,Operation与GCD最大的区别在于__ 面向对象的Operation可以很好的复用代码__。所以如果你的多线程开发的代码是只用执行一次就结束了的话还是用...
多线程并发有三个比较突出的问题, 资源竞争 死锁 优先级倒置 1. 资源竞争 在不同线程的同时想要更新一个变量,而读写是分开的,那么就可能会出现资源竞争的情况。CPU是基于时...
这时候我们就可以用DispatchGroup来处理 DispatchGroup 基础使用,追踪不同队列中的任务。 不同队列可以用来分别处理不同优先级的任务 wait 上述代码...
一个App是 一个进程,一个进程拥有 多个线程。GCD队列负责分配任务到不同的线程上。 多线程的优点: 运行更快. 多线程可以并发处理任务,速度比串行更快 响应. 如果全部任...
1. 术语 同步和异步 在同步队列里的任务,下一个任务会在当前任务 执行完成之后 再执行。 在异步队列里的任务,下一个任务会在当前任务 开始之后 就执行。 同步任务会阻塞当前...
参考教程 参考资料已经非常详细,请参考它来完成,本文略作补充此外,如果真的无法配置好Git环境,也可以每次写完文章hexo g然后把生成的public文件夹ftp到服务器上,...
当UITextfield的设置为密码模式的时候,再次输入也就是重新becomFirstResponder的时候便会清空当前内容 如何才能使密码不清空? 解决方案:在子类中重写...
pip安装遇到下载速度特别慢甚至请求超时错误的“.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted...