首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
底层
订阅
杨博宇
更多收藏集
微信扫码分享
微信
新浪微博
QQ
14篇文章 · 0订阅
iOS NSNotification使用及原理实现
NSPostNow:在合并通知完成之后立即发出通知。 即是NSNotification的发送与接收处理都是在同一个线程中,对于block形式则是接收处理在指定的队列中处理,上面已说明这点,这里重点说明下如何接收处理在其他线程处理。 其实就是一个hash表结构,既可以以数组的形式…
iOS runloop由浅入深
Event Loop事件循环机制,如javascript的事件循环,以及依赖其的nodejs都是采用的异步事件循环机制。 内核中由于不同架构的限制,很多时候会用到空宏,。在编译的时候,这些空宏会给出warning,为了避免这样的warning,我们可以使用do{...}whil…
Synchronized解析——如果你愿意一层一层剥开我的心
synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。 接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法。 由图可得,添加了s…
[iOS]Block系列探究一 - 初探
一直搞不懂OC的Block和Java的Lambda,特意研究了一下OC的Block。如果有理解不对或者不到位的地方,欢迎指正。 这一篇我们先梳理一下Block从声明到调用的大致流程。 带着疑问,我们往下看。 上面代码中的funcPtr并不是函数名,而是一个指针变量,它指向了fu…
[iOS]Block系列探究七 - Block循环引用
这次,我们来探究一下Block的循环引用,并且探讨一下如何避免循环引用。 两个对象直接或者间接的引用对方就是循环引用。 循环引用的两个对象无法释放。 上面的代码,在退出viewController的时候,block因为被viewController强引用,引用计数不为0,无法销…
自动释放池的前世今生 ---- 深入解析 autoreleasepool
由于 Objective-C 中的内存管理是一个比较大的话题,所以会分为两篇文章来对内存管理中的一些机制进行剖析,一部分分析自动释放池以及 autorelease 方法,另一部分分析 retain、release 方法的实现以及自动引用计数。
iOS内存管理二:自动释放池autoreleasepool
熟悉OC开发的都知道,在main函数中就有@autoreleasepool这样一个东西,其实这就是自动释放池。那么@autoreleasepool的底层实现是什么样的呢?我们在命令行中使用 clang -rewrite-objc main.m -o main.cpp 让编译器重…
iOS进阶之路 (十六)多线程 - GCD
GCD(Grand Central Dispatch) 是基于C语言的API,是苹果公司为多核的并行运算提出的解决方案。GCD会自动利用更多的CPU内核(比如双核、四核)。程序员只需要将任务添加到队列中,并且指定执行任务的函数,不需要别写任何线程管理的代码。 学习 GCD 之前…
iOS底层原理总结 - 探寻KVO本质
对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。 首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。 上述代码中可以看出,在添加监听之后,age属性的值在发…
iOS底层原理总结 - RunLoop
一. RunLoop简介 运行循环,在程序运行过程中循环做一些事情,如果没有Runloop程序执行完毕就会立即退出,如果有Runloop程序会一直运行,并且时时刻刻在等待用户的输入操作。RunLoop可以在需要的时候自己跑起来运行,在没有操作的时候就停下来休息。充分节省CPU资…