![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS底层原理总结
探索iOS较为底层的一些知识
new_dev
这个作者很懒,什么都没留下…
展开
-
iOS底层原理总结 - 探寻Runtime本质(四)
super的本质首先来看一道面试题。下列代码中Person继承自NSObject,Student继承自Person,写出下列代码输出内容。#import "Student.h"@implementation Student- (instancetype)init{ if (self = [super init]) { NSLog(@"[self class...转载 2019-10-17 15:57:36 · 160 阅读 · 0 评论 -
iOS底层原理总结 - 探寻Runtime本质(三)
方法调用的本质本文我们探寻方法调用的本质,首先通过一段代码,将方法调用代码转为c++代码查看方法调用的本质是什么样的。xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m[person test];// --------- c++底层代码((void (*)(id, SEL))(void *)objc_msgSend)...转载 2019-10-17 08:55:09 · 165 阅读 · 0 评论 -
iOS底层原理总结 - 探寻Runtime本质(二)
Class的结构通过上一章中对isa本质结构有了新的认识,今天来回顾Class的结构,重新认识Class内部结构。首先来看一下Class的内部结构代码,对探寻Class的本质做简单回顾。struct objc_class : objc_object { // Class ISA; Class superclass; cache_t cache; ...转载 2019-10-16 08:45:59 · 426 阅读 · 0 评论 -
iOS底层原理总结 - 探寻Runtime本质(一)
isa的本质在学习Runtime之前首先需要对isa的本质有一定的了解,这样之后学习Runtime会更便于理解。回顾OC对象的本质,每个OC对象都含有一个isa指针,__arm64__之前,isa仅仅是一个指针,保存着对象或类对象内存地址,在__arm64__架构之后,apple对isa进行了优化,变成了一个共用体(union)结构,同时使用位域来存储更多的信息。我们知道OC对象的is...转载 2019-10-15 08:52:31 · 175 阅读 · 0 评论 -
iOS底层原理总结 - 探寻block的本质(二)
上一篇文章iOS底层原理总结 - 探寻block的本质(一)中已经介绍过block的底层本质实现以及了解了变量的捕获,本文继续探寻block的本质。block对对象变量的捕获block一般使用过程中都是对对象变量的捕获,那么对象变量的捕获同基本数据类型变量相同吗?查看一下代码思考:当在block中访问的为对象类型时,对象什么时候会销毁?typedef void (^Block)(v...转载 2019-10-14 09:09:11 · 123 阅读 · 0 评论 -
iOS底层原理总结 - 探寻block的本质(一)
面试题block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMutableArray,需不需要添加__block?首先对block有一个基本的认识block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境的OC对象。...转载 2019-10-13 10:35:28 · 151 阅读 · 0 评论 -
iOS底层原理总结 - 关联对象实现原理
面试题Category能否添加成员变量?如果可以,如何给Category添加成员变量? 答:不能直接添加成员变量,但是可以通过runtime的方式间接实现添加成员变量的效果。RunTime为Category动态关联对象使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。我们通过之前的学习知道,对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容...转载 2019-10-12 08:45:00 · 307 阅读 · 0 评论 -
iOS底层原理总结 - Category的本质
面试题Category的实现原理,以及Category为什么只能加方法不能加属性。 Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗? load、initialize的区别,以及它们在category重写的时候的调用的次序。Category的本质首先我们写一段简单的代码,之后的分析都基于这段代码。Presen类 // Presen.h...转载 2019-10-11 08:42:27 · 123 阅读 · 0 评论 -
iOS底层原理总结 - RunLoop
面试题讲讲 RunLoop,项目中有用到吗? RunLoop内部实现逻辑? Runloop和线程的关系? timer 与 Runloop 的关系? 程序中添加每3秒响应一次的NSTimer,当拖动tableview时timer可能无法响应要怎么解决? Runloop 是怎么响应用户操作的, 具体流程是什么样的? 说说RunLoop的几种状态? Runloop的mode作用是什么?...转载 2019-10-10 08:41:49 · 342 阅读 · 0 评论 -
iOS底层原理总结 - 探寻KVO本质
对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。问题iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) 如何手动触发KVO首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。- (void)viewDidLoad { [super v...转载 2019-10-09 08:50:41 · 169 阅读 · 1 评论 -
iOS底层原理总结 - 探寻Class的本质
对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。上接iOS底层原理总结 - 探寻OC对象的本质Class的本质我们知道不管是类对象还是元类对象,类型都是Class,class和mete-class的底层都是objc_class结构体的指针,内存中就是结构体,本章来探寻Class的本质。Class objectClass = [NSObject...转载 2019-10-08 10:42:21 · 160 阅读 · 0 评论 -
iOS底层原理总结 - 探寻OC对象的本质
对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。面试题:一个NSObject对象占用多少内存?探寻OC对象的本质,我们平时编写的Objective-C代码,底层实现其实都是C\C++代码。OC代码的转化过程OC的对象结构都是通过基础C\C++的结构体实现的。我们通过创建OC文件及对象,并将OC文件转化为C++文件来探寻OC...转载 2019-09-27 17:52:00 · 199 阅读 · 0 评论