iOS消息转发机制
简介 Objective-C是一门动态语言,得力于他的objc/runtime.h,要理解runtime的实现原理,我们就需要对oc的消息发送、查找消息、消息转发进行理解。 C中的函数调用方式,是使用的静态绑定(static binding),即在编译期就能决定运行时所应调用的函数。而在Objective-C中,如果向某对象传递消息,就会使用动态绑定机制来决定需要调用的方法。而对于Obj...
简介 Objective-C是一门动态语言,得力于他的objc/runtime.h,要理解runtime的实现原理,我们就需要对oc的消息发送、查找消息、消息转发进行理解。 C中的函数调用方式,是使用的静态绑定(static binding),即在编译期就能决定运行时所应调用的函数。而在Objective-C中,如果向某对象传递消息,就会使用动态绑定机制来决定需要调用的方法。而对于Obj...
小球是一位码农,拿出他心爱的iPhone,解除锁屏,滑动屏幕找到今日头条APP,打开他并点击了其中一篇新闻,进入到了新闻详情页。这时他突然意识到,我从拿出手机到看到新闻详情,具体的实现细节是什么?? 屏幕解锁 操作系统层面的,硬件,驱动,系统唤醒 触摸屏幕 操作系统层面,硬件驱动处理 IOKit.framework为系统内核库,封装事件为IOHIDEvent 通过m...
编程语言类型 区别总结 类型 原理 优点 缺点 语言 编译型语言 通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux 等)执行的机器码(以可执行文件的形式存在)。 编译一次后,脱离了编译器也可以运行,并且运行效率高。...
Cocoapods plugins Cocoapods plugins是一个Ruby gem(Ruby gem是Ruby的一个包管理器,它提供一个分发Ruby程序和库的标准格式,还提供一个管理程序包安装的工具。),并且CocoaPods也是通过Ruby构建的。 安装模板插件cocoapods-plugins,来建立插件,如下: pod-plugin|⇒ sudo gem install...
npm:nodejs packect manage,允许用户从NPM服务器下载别人编写的第三方包到本地使用、下载并安装别人编写的命令行程序(CLI)到本地使用、将自己编写的包或命令行程序上传到NPM服务器供别人使用。 cli:command line interface,命令行界面,是指可在用户提示符下键入可执行指令的界面, 一直知道npm install一些工具之后,自己就能在终端使用...
TCP介绍 TCP 协议简介 开放式系统互联模型(英语:Open System Interconnection Model,缩写:OSI;简称为OSI模型) 第七层:应用层 HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3 第六层:表示层 把数据转换为能与接收者的系统格式兼容并适合传输的格式 第五层:会话层 Socket:实现了下面两层的封装 ...
安装xcpretty碰到 demo|dev ⇒ gem install xcpretty ERROR: Loading command: install (LoadError) dlopen(/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/x86_64-darwin16/openssl.bundle, 9): Library not loaded...
CI/CD CI:Continuous Integration,持续集成。即在代码构建过程中持续地进行代码的集成、构建、以及自动化测试等。有了 CI 工具,我们可以在代码提交的过程中通过单元测试等尽早地发现引入的错误。 CD:Continuous Delivery,持续交付。在代码构建完毕后,可以方便地将新版本部署上线, CD:Continuous Deployment,持续交付。快速...
allocator.h中,有段代码用到了static_cast,如下 template <class T> T* allocator<T>::allocate() { return static_cast<T*>(::operator new(sizeof(T))); } 这里涉及到两个知识点:隐式类型转换和显示类型转换。首先要介绍下,什么是类型...
在vector.h中,刚开始就出现了大量的typedef和typename,所以,恶补了下基本知识。 // 模板类: vector // 模板参数 T 代表类型 template <class T> class vector { static_assert(!std::is_same<bool, T>::value, "vector<bool> i...