首页
首页
BOT
沸点
课程
直播
活动
AI刷题
NEW
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS笔记
JiandanDream
创建于2021-05-11
订阅专栏
iOS 开发相关,包括但不限于 ObjC、Swift
暂无订阅
共16篇文章
创建于2021-05-11
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
performSelector:withObject:afterDelay:使用tips
在非主线程使用 -[NSObject performSelector:withObject:afterDelay:] 时,需要启动 RunLoop,而且启动时有一些需要注意的地方。
源码浅析-iOS缓存NSCache
NSCache 是 iOS 上常用的缓存机制。 其内部数据结构是「哈希表 + 双向链表」。 当需要释放空间时,它优先删除 cost 较低的。
温故而知新-iOS圆角与离屏渲染
离屏渲染是指 GPU 不在当前屏幕缓冲区进行渲染,会创建新的缓冲区。 在 iOS 上,典型场景就是圆角。
温故而知新 - ObjC Category 实现原理
Category 主要作用是为已有的类,添加方法、属性、协议。 其实现原理,一方面,在编译时期,会生成 category_t 及相关结构体。 另一方面,在运行时期,会将这些方法、属性、协议添加到类之中。 比较特殊地,它并非继承 objc_object。 而且,当中并没有 iva…
温故而知新 - ObjC Swift 引用计数的实现对比
ObjC 引用计数,以哈希表形式,存在于全局的几个 SideTable 之中。 而 Swift 则是对象自行保存着引用计数的关系。 引用计数表数据结构:obj 作为 key,计数作为 value。 以 RefcountMap 的结构,存储在 SideTable 中,而后者则是使…
Objc StripedMap 优化加锁缓存
对于加了锁的缓存,StripedMap 可以起到提高访问速度的作用。 典型应用场景: SideTable。 从注释中可以了解到,它可用来优化加了锁的缓存。 笔者觉得可将其看成是缓存的「管理者」。 加了锁的缓存,访问速度会相应地变慢,尤其在并发量大的情况下。 直接多几个缓存,使用…
温故而知新-ObjC weak
本文主要记录 ObjC weak 原理。 存储 weak 关系的数据结构为散列表,结构为 hash(&obj) : [&p1, &p2, ...]。 weak 变量,在指向的对象被销毁时,该变量会被置为 nil。 「使用」 __weak 修饰的变量…
温故而知新-ObjC Runtime 方法缓存
ObjC Runtime 的消息传递过程中,会使用方法缓存提高效率。 每个类有一个方法缓存,而不是每个对象都有一个缓存。 方法缓存是一个散列表。 若调用的是父类的方法,也会添加到本类的缓存里。 先简单回顾下。 Runtime System 会创建一个 NSInvocaton 对…
温故而知新-iOS事件响应链
用一句话概括响应链过程:先寻找第一响应者,若它无法处理该事件,则传递给下一响应者。 当一个触摸事件生成时,系统会将其加入到 UIApplication 管理的事件队列中。 UIApplication 会取出队列最前面事件,分发给合适的 Window。 Window 会在当前视图…
温故而知新-ObjC Block
Block 又称为匿名函数,本质是一个 ObjC 对象,其结构体里会有一个指针指向具体的函数实现。 它有 3 种类型,分别存储在静态数据区、栈区、堆区。 截获的变量会直接拷贝到 Block 结构体里,或捕捞其指针。 一般可使用 weak 和 __block 修饰符来解决循环引用…
关于 Method Swizzling 的一点思考
查找资料后,给出以下回答。 根据对象的 isa 指针,找到类。 在类的 objc_cache 和 method_list 中,根据 method name 寻找对应方法。 若没有找到,则在其父类中寻找,直到 NSObject。 结合 runtime 代码(简化后),理解上述过程…
Objective-C 内存管理
本文是阅读 Advanced Memory Management Programming Guide 的笔记。 主要内容是关于手动管理内存的规则。 目前 Xcode 默认使用 ARC ,而在 ARC 环境下,很多工作,编译器已经帮忙完成了。 而要真正了解内存管理规则,还得追根溯…
Objective-C自动引用计数ARC
这篇文章是阅读 Transitioning to ARC Release Notes 的笔记。 主要内容是关于 ARC 的规则。 Automatic Reference Counting(ARC) 作为一个编译工具,自动管理 Objective-C 对象。 简单地说,就是不再需…
iOS 使用 NSCharacterSet encode URL
当使用 GET 方式进行网络通信时,参数会作为 URL 的一部分,此时需要对 URL 进行 Percent-Encoding,即把一些字符转换成百分号形式,如空格用 %20 代替。 先从 iOS SDK 中找起,在 NSURL.h 中找到了 URLHostAllowedChar…
iOS Framework 单元测试(一)-- XCTests
单元测试的重要性,不言而喻,在迭代开发 Framework 的过程中,好的单元测试,能及早发现问题。 关于 iOS Framework 的单元测试,常见的工具,当属官方提供的 XCTests,但它也有些局限,所以笔者写了个小工具,对其进行补充。 本文会简单介绍 XCTests …
iOS Framework 单元测试(二)-- JDAppTests(XCTests的补充)
笔者在使用了 XCTests 对 Framework 进行单元测试过程中,发现无法使用 XCTests 进行真机测试,而项目刚好涉及到必须真机测试的功能。 所以简单地做了个小工具,对其进行补充。 目标:使用真机进行单元测试。 简单粗暴的方式,就是创建一个 App 工程,然后将 …