摘要: 📣 iOS进阶笔记目录 #pragma mark- 😁😁😁😁😁😁 isMemberOfClass + (BOOL)isMemberOfClass:(Class)cls { // 判断当前类对象的isa(即元类对象)是否与cls相等,要求cls为元类对象(通过object_getClas 阅读全文
posted @ 2021-08-04 20:58 ITRyan 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 一、KVC定义 KVC(Key-Value Coding)是利用NSKeyValueCoding 非正式协议实现的一种机制,对象采用这种机制来提供对其属性的间接访问. KVC是通过对NSObject的扩展来实现的 —— 只要继承了NSObject的类都可以使用KVC NSA 阅读全文
posted @ 2021-08-04 20:57 ITRyan 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 +load方法(不会触发消息机制) 相关runtime源码执行顺序 _objc_init → load_images → call_load_methods → call_class_loads → call_category_loads 调用时机:在runtime初始化动 阅读全文
posted @ 2021-08-04 20:57 ITRyan 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 一、KVO定义 KVO,即Key-value observing,是一种允许监听指定属性值改变的通知机制。官方文档解释如下: Key-value observing is a mechanism that allows objects to be notified of c 阅读全文
posted @ 2021-08-04 20:57 ITRyan 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 本章目录 一、BlocK对象本质分析 1、通过clang分析block结构 2、通过LLVM开源的block源码分析block结构 3、根据Block本质及变量捕获原理,通过Objective-C++实现block及变量捕获过程 4、小结 二、Block类型分析 1、Blo 阅读全文
posted @ 2021-08-04 20:57 ITRyan 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 📣iOS进阶笔记目录 前言: Block的使用与C语言的函数指针比较类似。 为方便理解,我们先看看C语言函数指针的使用。 一、C语言函数指针 C 语言函数指针使用步骤拆解: 函数指针定义 returnType (*func_ptr)(parameterTypes) 指针赋值:将函数指针指向函数首地 阅读全文
posted @ 2021-08-04 20:56 ITRyan 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 📣 [iOS进阶笔记目录](https://www.cnblogs.com/itmarsung/p/15002448.html) ## 一、什么情况下使用关联对象 如果类要添加属性,只有在`objc_allocateClassPair`与`objc_registerClassPair`之间`cla 阅读全文
posted @ 2021-08-04 20:54 ITRyan 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 isa isa的本质是union isa_t类型的共用体 共用体的特点是:所有成员都共用一块内存,内存大小为最大成员的内存 isa源码结构 union isa_t { isa_t() { } isa_t(uintptr_t value) : bits(value) { } 阅读全文
posted @ 2021-08-04 20:54 ITRyan 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 一、通过runtime源码分析Category加载过程 1、runtime初始化入口函数(objc-os.mm) void _objc_init(void) { static bool initialized = false; if (initialized) return 阅读全文
posted @ 2021-08-04 20:53 ITRyan 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 📣iOS进阶笔记目录 一、Class结构本质 1、objc_class结构 struct objc_class : objc_object { // Class ISA; // 父类 Class superclass; // 缓存 cache_t cache; // formerly cache 阅读全文
posted @ 2021-08-04 20:52 ITRyan 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 1、Category的使用 扩展原有类的功能:Category增加成员属性(通过关联对象方式)、方法(包括instance-method和class-method)、协议 下面以Person(继承NSObject)类为例 @interface Person (Method) 阅读全文
posted @ 2021-08-04 20:52 ITRyan 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 对象种类划分 实例对象(instance) 类对象(class) 元类对象(meta-class) 分析对象内存,我们从一个栗子🌰开始 👇Student对象系统为其分配了多少内存?对象占用多少内存?有效内存(实际使用的内存大小)又是多少? @interface Pers 阅读全文
posted @ 2021-08-04 20:51 ITRyan 阅读(216) 评论(0) 推荐(0) 编辑