首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
低调的默认名
掘友等级
iOS酱油工程师
|
北京砖厂
国家一级iOS爱好者,Flutter小学生
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
35
文章 35
沸点 0
赞
35
返回
|
搜索文章
最新
热门
iOS底层学习 - KVO探索之路
KVO:(Key-Value-Observer)是一种机制,也叫观察者模式,该机制允许将其他对象的特定属性的更改通知给对象。对于应用程序中模型层和控制器层之间的通信特别有用 KVO的在平时的开发过程中,使用也比较多。基本就是3个步骤: context: 上下文,主要是传递给代理…
iOS底层学习 - KVC探索之路
KVC全称是Key-Value Coding,键值编码,可以通过Key来访问和修改属性。 我们可以通过查看Apple的官方文档来查看其定义和具体的用法。 基本的用法分为两种:赋值和取值。主要API如下 层级使用也比较容易理解,主要使用了setValue:forKeyPath:的…
iOS底层学习 - Runtime之砖厂面试答疑
答:是由C 和C++ 汇编 实现的⼀套API,为OC语⾔加⼊了⾯向对象,运⾏时的功能。平时编写的OC代码,在程序运⾏过程中,其实最终会转换成Runtime的C语⾔代 码,Runtime 是 Objective-C 的幕后⼯作者。 比如:将数据类型的确定由编译时推迟到了运⾏时,比…
iOS底层学习 - Runtime之Method Swizzling黑魔法
Method Swizzling(方法交换),顾名思义,就是将两个方法的实现交换,即由原来的A-AImp、B-BImp对应关系变成了A-BImp、B-AImp。 每个类都维护一个方法Method列表,Method则包含SEL和其对应IMP的信息,方法交换做的事情就是把SEL和I…
iOS底层学习 - 内存管理之weak原理探究
我们通过例子🌰来看一下__strong、__weak、__unsafe_unretained的区别在哪里. 先来看一下用__strong修饰的结果。可以发现修饰的对象在作用域结束之后并没有销毁,说明该对象的引用计数增加了 再来看一下__weak修饰的结果。通过下面的运行我们可…
iOS底层学习 - 从编译到启动的奇幻旅程(三)
根据字面意思我们可以得出,这个方法是读取影响运行时的环境变量,可以使用 export OBJC_HELP=1 来打印环境变量,从而进行一些调试,可以再Xcode中进行设置,从而达到想要的效果打印。相关可以参考OBJC_HELP OBJC_PRINT_LOAD_METHODS这个…
iOS底层学习 - 从编译到启动的奇幻旅程(二)
首先安利一本书《程序员的自我修养--链接、装载与库》,看完神清气爽。 可执行文件(程序)是一个静态的概念,在运行之前它只是硬盘上的一个文件;而进程是一个动态的概念,它是程序运行时的一个过程,我们知道每个程序被运行起来后,它会拥有自己独立的虚拟地址空间,这个地址空间大小的上限是由…
iOS底层学习 - 从编译到启动的奇幻旅程(一)
总体来说,一个APP从编写完代码到运行,就经历了两大步骤,即编译和运行,这一章节,主要来看一下APP的进行编译的。 iOS的代码,是通过编译器将代码直接编写成机器码,然后直接在CPU上运行机器码的,这样能使得我们的app和手机都能效率更高,运行更快。C,C++,OC等语言,都是…
iOS底层学习 - Runtime之方法消息的前世今生(二)
动态解析主要方法为_class_resolveMethod,源码如下,主要是对元类的判断。因为类方法是储存在元类之中的,处理方式略有不同 我们通过查看源码,发现在获取到IMP之后,系统会调用log_and_fill_cache,说明系统会对缓存的方法加日志,我们可以通过系统的日…
iOS底层学习 - Runtime之方法消息的前世今生(一)
对于一些调用频率太高的函数或操作,使用汇编来实现能够提高效率和性能,容易被机器来识别。
下一页
个人成就
文章被点赞
253
文章被阅读
81,067
掘力值
2,024
关注了
29
关注者
1,287
收藏集
1
关注标签
20
加入于
2018-07-18