首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS底层学习
订阅
rule
更多收藏集
微信扫码分享
微信
新浪微博
QQ
25篇文章 · 0订阅
iOS底层学习 - 内存管理之Autoreleasepool
通过之前章节的学习,我们知道在ARC下,LLVM编译器会自动帮我们生产retain、release和autorelease等代码,减少了在MRC下的工作量。调用autorelease会将该对象添加进自动释放池中,它会在一个恰当的时刻自动给对象调用release,所以autore…
iOS底层学习 - 内存管理之内存管理方案
移动端的内存管理技术,主要有 GC(Garbage Collection,垃圾回收)的标记清除算法和苹果公司使用的引用计数方法。 相比较于 GC 标记清除算法,引用计数法可以及时地回收引用计数为 0 的对象,减少查找次数。但是,引用计数会带来循环引用的问题,比如当外部的变量强引…
iOS底层学习 - 深入RunLoop
一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,这种模型通常被称作 Event Loop。 Event Loop 在很多系统和框架里都有实现,比如 Node.js 的事件处理,比如 Windows 程序的消息…
iOS底层学习 - Block全解
Block 是 Objective-C 对于闭包的实现。 简单来说,block就是将一些代码封装起来,以便在将来某个时候被使用,如果你不去调用block,block内部封装的代码就不会执行。 接下来查看__main_block_impl_0函数的定义,我们发现其内部其实就是进行…
iOS底层学习 - 多线程之中的锁🔐
锁 -- 是保证线程安全常见的同步工具。锁是一种非强制的机制,每一个线程在访问数据或者资源前,要先获取(Acquire) 锁,并在访问结束之后释放(Release)锁。如果锁已经被占用,其它试图获取锁的线程会等待,直到锁重新可用。 前面说到了,锁是用来保护线程安全的工具。 可以…
iOS底层学习 - 多线程之GCD底层原理篇
对于GCD的底层来说,主要有队列创建,函数执行,同步异步原理和其他应用函数的原理。关于队列原理的,我们之前的篇章已经讲过,相信对于GCD是如何创建队列的,已经有了认识,今天就来继续看其他的底层原理,还是通过源码来深入研究 我们都知道,当使用dispatch_sync在串行队列上…
iOS底层学习 - 多线程之GCD应用篇
我们知道GCD除了基本的dispatch_sync和dispatch_async用法外,还有一些其他的用法,比如信号量,调度组,延时执行等等。我们来看一下这个使用是怎么应用到我们平常的多线程开发当中的。 下面我们来分析一下,我们发现在主队列中有while任务NSLog任务,所以…
iOS底层学习 - 多线程之GCD队列原理篇
要像知道是底层是如何创建的,最好的方法还是阅读源码,万幸的是,多线程的代码,苹果是开源的,可以点击libdispatch源码下载。 在底层源码中,我们可以看到dispatch_queue_create的底层实现如下,可以看到调用了一个中间代码方法。下面我们深入_dispatch…
iOS底层学习 - 多线程之GCD初探
GCD全程为Grand Central Dispatch,由C语言实现,是苹果为多核的并行运算提出的解决方案,CGD会自动利用更多的CPU内核,自动管理线程的生命周期,程序员只需要告诉GCD需要执行的任务,无需编写任何管理线程的代码。GCD也是iOS使用频率最高的多线程技术。 …
iOS底层学习 - 多线程之基础原理篇
当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存。 在iOS开发中,一个App在内存中就是一个进程,且相互独立,只能访问自己的沙…