iOS-底层原理 25:多线程原理
本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理线程 和 进程线程和进程的定义线程线程时进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须的有线程,进程至少要有一条线程程序启动会默认开启一条线程,这条线程被称为 主线程 或者 UI线程进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内通过“活动监视器”....
iOS-底层原理 24:内存五大区
在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域。如下图所示下面分别介绍这五大区栈区(Stack)定义栈是系统数据结构,其对应的进程或者线程是唯一的栈是向低地址扩展的数据结构栈是一块连续的内存区域,遵循先进后出(FILO)原则栈的地址空间在iOS中是以0X7开头栈区一般在运行时分配存储栈区是由编译器自动分配并释放的,主要用来存储局部变量函数的参数,例如函数的隐藏参数(id se....
iOS-底层原理 23:KVO 底层原理
KVO,全称为Key-Value observing,中文名为键值观察,KVO是一种机制,它允许将其他对象的指定属性的更改通知给对象。在Key-Value Observing Programming Guide官方文档中,又这么一句话:理解KVO之前,必须先理解KVC(即KVO是基于KVC基础之上)In order to understand key-value observing, you m....
iOS-底层原理 22:KVC 底层原理
KVC的全称是Key-Value Coding,翻译成中文是 键值编码,键值编码是由NSKeyValueCoding非正式协议启用的一种机制,对象采用该协议来间接访问其属性。既可以通过一个字符串key来访问某个属性。这种间接访问机制补充了实例变量及其相关的访问器方法所提供的直接访问。KVC 相关API常用方法主要有以下四个常用的方法通过key 设值/取值//直接通过Key来取值 - (nulla....
iOS-底层原理 21:Method-Swizzling 方法交换
method-swizzling 是什么?method-swizzling的含义是方法交换,其主要作用是在运行时将一个方法的实现替换成另一个方法的实现,这就是我们常说的iOS黑魔法,在OC中就是利用method-swizzling实现AOP,其中AOP(Aspect Oriented Programming,面向切面编程)是一种编程的思想,区别于OOP(面向对象编程)OOP和AOP都是一种编程的....
iOS-底层原理 20:OC底层面试解析
【面试-1】Runtime Asssociate方法关联的对象,需要在dealloc中释放?当我们对象释放时,会调用dealloc1、C++函数释放 :objc_cxxDestruct2、移除关联属性:_object_remove_assocations3、将弱引用自动设置nil:weak_clear_no_lock(&table.weak_table, (id)this);4、引用计数....
iOS-底层原理 19:类扩展 与 关联对象 底层原理探索
本文的主要目的是针对类的加载的一个扩展,主要讲讲类拓展和分类的底层实现原理【面试题】类扩展 与 分类 的区别1、category 类别、分类专门用来给类添加新的方法不能给类添加成员属性,添加了成员属性,也无法取到注意:其实可以通过runtime 给分类添加属性,即属性关联,重写setter、getter方法分类中用@property 定义变量,只会生成变量的setter、getter方法的声明,....
iOS-底层原理 18:类的加载(下)
在上一篇文章iOS-底层原理 17:类的加载(上)中,理解了类是如何从Mach-O加载到内存中,这次我们来解释下分类是如何加载到类中的,以及分类和类搭配使用的情况分类的本质前提:在main中定义LGperson的分类LG探索分类的本质,有以下三种方式【方式一】通过clang【方式二】通过Xcode文档搜索Category【方式三】通过objc源码搜索 category_t方式一:通过clang【....
iOS-底层原理 17:类的加载(上)
在上一篇iOS-底层原理 16:dyld与objc的关联文章中,我们理解了dyld与objc是如何关联的,本文的主要目的是理解类的相关信息是如何加载到内存的,其中重点关注map_images和load_imagesmap_images:主要是管理文件中和动态库中的所有符号,即class、protocol、selector、category等load_images:加载执行load方法其中代码通过....
iOS-底层原理 16:dyld与objc的关联
本文的主要目的是理解dyld与objc是如何关联的在上一篇文章iOS-底层原理 15:dyld加载流程中,我们梳理了dyld的加载流程,下面来详细介绍下dyld和objc的关联_objc_init 源码解析首先,来看下libObjc中的_objc_init方法源码void _objc_init(void) { static bool initialized = false; if...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
mPaaS 移动开发平台
mPaaS 源于蚂蚁集团金融科技,为 App 开发、测试、运营及运维提供云到端的一站式解决方案,致力于提供高效、灵活、稳定的移动研发、管理平台。 官网地址:https://www.aliyun.com/product/mobilepaas/mpaas
+关注