iOS-底层原理 04:NSObject的alloc 源码分析
主要NSObject中的alloc是与自定义类的alloc的源码流程的区别,以及为什么NSObject中的alloc不走源码工程。在上一篇文章中分析了alloc的源码,这篇文章是作为对上一篇文章的补充,去探索为什么NSObject的alloc方法不走源码工程。NSObject的alloc无法进入源码的问题首先在objc4-781可编译源码中的main函数中增加一个NSObject定义的对象,NS....
iOS-底层原理 05:内存对齐原理
在探讨内存对齐原理之前,首先介绍下iOS中获取内存大小的三种方式获取内存大小的三种方式获取内存大小的三种方式分别是:sizeofclass_getInstanceSizemalloc_sizesizeof1、sizeof是一个操作符,不是函数2、我们一般用sizeof计算内存大小时,传入的主要对象是数据类型,这个在编译器的编译阶段(即编译时)就会确定大小而不是在运行时确定。3、sizeof最终得....
iOS-底层原理 03:objc4-781 源码编译 & 调试
本文主要是通过将objc4-781的源码编译成功,然后在源码中进行调试,便于跟踪方法的底层实现流程准备工作环境版本 & 最新objc源码mac OS 10.15Xcode 11.4objc4-781依赖文件下载需要下载以下依赖文件其中除了其中 launchd-106.10 需要在Mac OS X 10.4.4下载,其他的均可以在最新的的版本macOS 10.15中检索到源码编译源码编译就....
iOS-底层原理 02:alloc & init & new 源码分析
在分析alloc源码之前,先来看看一下3个变量 内存地址 和 指针地址 区别:分别输出3个对象的内容、内存地址、指针地址,下图是打印结果结论:通过上图可以看出,3个对象指向的是同一个内存空间,所以其内容 和 内存地址是相同的,但是对象的指针地址是不同的%p -> &p1:是对象的指针地址,%p -> p1: 是对象指针指向的的内存地址这就是本文需要探索的内容,alloc做了什....
iOS-底层原理 01:源码探索的三种方式
本文主要介绍下源码探索的三种方法1、符号断点直接跟流程2、通过按住control+step into3、汇编跟流程下面详细讲下这三种方法是如何查找到函数所在的源码库,以alloc为例1、符号断点直接跟流程通过下alloc的符号断点选择断点Symbolic Breakpoint符号断点中输入 allocmain中的CJLPerson处 加一个断点在走到这部分断点之前,需要关闭上面新增的符号断点,原....
iOS - 第三下输入法App原理调研、App Group数据共享(下)
2.3 键盘UI布局我把源码上传到了GithubCCInput键盘的UI布局我以简单以搜狗输入法的数字键盘为例,这里附上代码说明,具体请查看Demo代码KeyboardViewController 创建keyboard extension时,系统自动创建的vc,继承自UIInputViewController,键盘的布局、逻辑处理都在此类中CCLeftTableView 左侧符号输入,是一个Ta....
iOS - 第三方输入法App原理调研、App Group数据共享(上)
前言为啥我一个做社交、直播、图片后编辑方向的iOS开发突然想学输入法开发呢,这一切还得从我看到搜狗输入法的招聘JD说起....我看到搜狗输入法的招聘里写到一条:了解逆向优先,此时我有个疑问,做输入法App开发和逆向有什么关系? 于是就有了想了解输入法App开发的兴趣,也就有个这篇文章首先在写这个前言的时候,我是压根不知道输入法怎么开发的。当想到要做一个输入法App时,我有如下疑问为什么安装了搜狗....
iOS - CocoaPods原理
CocoaPods将所有的依赖库都放到Pods项目中,让主项目依赖Pods项目,这样源码管理工作都从主项目迁移到了Pods项目中Pods项目最终会编译成一个名为libPods.a文件,主项目只需要依赖这个.a文件即可(也有可能是.framework文件)对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次编译的时候都会执行,将第三方库的各种....
iOS底层原理:KVC分析(二)
KVC自定义实现清楚了KVC的设值和取值流程,我们就可以自定义一下它的实现过程,代码如下:- (void)lg_setValue:(nullable id)value forKey:(NSString *)key{ // KVC 自定义 // 1: 判断什么 key if (key == nil || key.length == 0) { return; ...
iOS底层原理:Method Swizzling原理和注意事项(一)
Method Swizzling 是什么?Method Swizzling的含义是方法交换,其核心内容是使用runtime api在运行时将一个方法的实现替换成另一个方法的实现。我们利用它可以替换系统或者我们自定义类的方法实现,进而达到我们的特殊目的,这就是我们常说的iOS黑魔法。本文Demo地址:Github-JQMethodSwizzlingMethod Swizzling 原理OC方法在底....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
mPaaS 移动开发平台
mPaaS 源于蚂蚁集团金融科技,为 App 开发、测试、运营及运维提供云到端的一站式解决方案,致力于提供高效、灵活、稳定的移动研发、管理平台。 官网地址:https://www.aliyun.com/product/mobilepaas/mpaas
+关注