美文网首页
IOS 2020-02-28 一周学习内容总结

IOS 2020-02-28 一周学习内容总结

作者: 缪雨轩 | 来源:发表于2020-02-28 16:23 被阅读0次

1.runtime的内容复习总结,知道了消息传递和消息转发的机制和内部原理。

runtime特性:
消息传递,消息转发
runtime是oc面向对象和动态机制的基石
oc通过运行时系统动态的创建类和对象,进行消息传递和消息转发,runtime扩展了oc,从系统层面解决了项目中的一些设计和技术的问题,消息传递时runtime的核心概念
runtime基本是用C语言和汇编写的

runtime消息传递的过程

1.首先通过对象的isa指针找到它的class
2.在class的method list中寻找foo
3.如果找不到foo就去superclass中找
4.一旦找到foo这个函数就执行它的实现IMP

但是这个流程在实现中存在问题,效率低下
runtime给出了解决方案:
objc-class中有一个重要的成员:objc-cache
之前经常被调用的方法被缓存到了这里,foo函数的method_name作为key,method_imp作为vlaue保存了起来,下载再去调用方法的时候会先去cache中找,避免每次都去遍历objc_method_list,提高了效率

    消息传递的一些概念:
1,类对象(objc_class)
oc类是用class类型来表示的,类对象实际上是一个指向objc_class结构体的指针,里面包含了父类的指针,类的名字,版本,信息,实例大小,实例变量列表,方法列表,缓存,协议列表,class本身就是一个对象,称为类对象。
2.实例(objc_object)
类对象的isa指针的指向我们称之为元类(metaClass)
元类中包含了创建类属性和方法的全部信息
Pasted Graphic 2.png
实例对象的isa指针指向类对象
类对象的isa指针指向元类
元类的superclass指针指向了父类的元类
父类的元类的superclass指针指向了根类的元类
根类的元类的isa指针指向它自己    
根类的元类的superclass指针指向了类对象(NSobject)
NSobject的superclass指针指向nil

3.method(函数)
能够独立完成一个功能的一段代码
4.SEL
是objc_selector的实例对象
@property SEL selector;
selector是SEL的实例对象,名字叫方法选择器,在oc中不允许名称相同参数不同的方法存在
5.IMP
指向最终实现程序内存地址的指针
6.objc_cache(类缓存)
存放了之前调用的方法,每次调用方法是不会先去方法列表中遍历,而是先去缓存中找,如果找不到再去方法列表中找。
7.Category(objc_category)
表示一个指向分类的结构体的指针

runtime消息转发 
执行的最后三个步骤
1.动态方法解析
2.备用接收者
3.完整消息转发
Pasted Graphic.png
动态方法解析调用的方法是:resolveInstanceMethod,如果返回NO,执行备用接收者
备用接收者调用的方法是:forwardingTargetForSelector,返回空就执行完整消息转发
完整消息转发先调用的方法是: methodSignatureForSelector,如果返回了签名就继续执行
forwardInvocation,如果返回了空就抛出异常doesNotRecognizeSelector

2.算法部分看了三个问题:1.两数之和问题 2.数字反转问题 3.最大水量问题

代码地址

https://github.com/miaoyuxuan/AlgorithmLearning.git

相关文章

  • IOS 2020-02-28 一周学习内容总结

    1.runtime的内容复习总结,知道了消息传递和消息转发的机制和内部原理。 2.算法部分看了三个问题:1.两数之...

  • iOS 资料文档总集

    iOS资料文档总集 iOS资料 iOS学习社区 iOS总结1 iOS总结2 iOS扩展 RunTime学习 Git...

  • UI第一周学习总结

    ios开发之UI学习第一周总结 UIView基本属性、方法、视图关系、动画 基本属性和方法 UIView:是iOS...

  • iOS学习笔记--触摸事件

    最近空闲时间在学习iOS相关知识,几周没有更新文章了,今天总结下这些天的学习内容,也整理下iOS的学习笔记,以便以...

  • iOS中NSLog输出格式大全

    本文的内容是总结了一下iOS开发中NSLog输出格式大全,虽然比较基础,但有总结毕竟会各位正在学习iOS开发的朋友...

  • 转载康泽师一周总结

    一周总结 一周的时间过得非常的快,回顾这一周,收获颇丰。此篇总结一下本周的整体学习内容。 【本周做了什么】 1,书...

  • Runtime 机制

    内容参考: 南峰子技术博客 iOS底层原理总结 - Category的本质 iOS底层原理总结 - 探寻Runti...

  • ios 总结这一周所遇到的问题以及处理方式

    ios 总结这一周所遇到的问题以及处理方式

  • iOS知识体系总结-网络相关

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-网络相关 iOS知识点/网络相关 #iOS...

  • iOS知识体系总结-UI部分

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-UI部分 iOS知识点/UI相关 #iOS...

网友评论

      本文标题:IOS 2020-02-28 一周学习内容总结

      本文链接:https://www.haomeiwen.com/subject/zeulhhtx.html