摘要: 📣 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进阶相关的博客,记录自己所学。奈何表达能力有限,躺在印象笔记里甚久的知识,却难登大雅之堂。加之iOS写这方面博客着实太多,其中大牛🐂不乏其人,又加剧了内心的胆怯。直到,有位朋友告诉我,印象笔记只是记录零碎的知识点,只是从他人所学的搬运;而博客却不同,它是把理解的知识点总结 阅读全文
posted @ 2021-05-05 21:33 ITRyan 阅读(128) 评论(0) 推荐(0) 编辑
摘要: /\ /**\ /****\ /\ / \ /**\ / /\ / \ / / \ / \ __@ / / \/ /\ \ _`\<,_ KEEP LOOKING / / \/ \/\ \ (*)/ (*) DON`T SETTLE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 阅读全文
posted @ 2020-06-21 22:39 ITRyan 阅读(49) 评论(0) 推荐(0) 编辑
摘要: /\ /**\ /****\ /\ / \ /**\ / /\ / \ / / \ / \ __@ / / \/ /\ \ _`\<,_ KEEP LOOKING / / \/ \/\ \ (*)/ (*) DON`T SETTLE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 阅读全文
posted @ 2022-12-30 10:14 ITRyan 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 📣 iOS进阶笔记目录 #pragma mark- 😁😁😁😁😁😁 isMemberOfClass + (BOOL)isMemberOfClass:(Class)cls { // 判断当前类对象的isa(即元类对象)是否与cls相等,要求cls为元类对象(通过object_getClas 阅读全文
posted @ 2021-08-04 20:58 ITRyan 阅读(71) 评论(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进阶笔记目录 +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进阶笔记目录 一、KVC定义 KVC(Key-Value Coding)是利用NSKeyValueCoding 非正式协议实现的一种机制,对象采用这种机制来提供对其属性的间接访问. KVC是通过对NSObject的扩展来实现的 —— 只要继承了NSObject的类都可以使用KVC NSA 阅读全文
posted @ 2021-08-04 20:57 ITRyan 阅读(81) 评论(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) 编辑