首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS
订阅
觉醒少年
更多收藏集
微信扫码分享
微信
新浪微博
QQ
16篇文章 · 0订阅
是时候理解Xcode工程与CocoaPods了
从补充网上的二进制重排方案开始,探讨Xcode工程目录和CocoaPods,理解CocoaPods到底为我们做了什么。
iOS IP 直连原理剖析
移动互联网的网络状况是十分复杂的,三大运营商、3G、4G、Wi-Fi、地点等任何一个状态的改变都会导致网络状况的变化,并且运营商、代理商们还可能在其中搞一些小破坏,比如经常会有用户反馈说某个页面访问不了或者返回结果不正确等问题,这种状况一般都是发生了域名劫持,通用的解决方案就是…
如何提高 Xcode 的编译速度
通常,我们的 Target 都会显式依赖其他 Target,在链接的时候会隐式链接其他很多库(Library)。以一个游戏的依赖为例,Tests Target 会依赖 Game、Shaders、Utilities,同时 Game 也需要依赖 Shaders、Utilities、…
静态拦截iOS对象方法调用的简易实现
最近出现了几篇关于二进制重排启动优化的文章。所有方案中都需要事先统计所有的函数调用情况,并根据函数调用的频次来进行代码的重排。 这些函数调用中,OC对象的方法调用最多。统计OC对象的方法调用可以在运行时通过第三方库比如fishhook来Hook所有objc_msgSend调用来…
iOS底层学习 - 从编译到启动的奇幻旅程(二)
首先安利一本书《程序员的自我修养--链接、装载与库》,看完神清气爽。 可执行文件(程序)是一个静态的概念,在运行之前它只是硬盘上的一个文件;而进程是一个动态的概念,它是程序运行时的一个过程,我们知道每个程序被运行起来后,它会拥有自己独立的虚拟地址空间,这个地址空间大小的上限是由…
关于iOS内存的深入排查和优化
虚拟内存机制在这里就不多说了,主要包括内存管理单元MMU、内存映射、分段、分页。在iOS中,一页通常有16KB的内存空间。 分配内存的时候,先分配虚拟内存,然后使用的时候再映射到实际的物理内存。 一个VM Region指的是一段连续的虚拟内存页,这些页的属性都相同。 VM分为C…
iOS进阶-内存管理
堆区 :通过alloc分配对象、block copy... bbs区:未初始化的全局变量、静态变量... data区:已初始化的全局变量、静态变量... 答:有。全局变量存在全局区(bbs区/data区),局部变量存在栈区 apple在内存管理方面提供了三种方案(TaggetP…
你对@synthesize混淆了吗?
@synthesize 是编译器自动生成 setter/getter 方法的实现(实现实现实现很重要)的关键词。当前开发中使用了 @property 后,会在 .m 中自动生成 @synthesize 属性名 = _属性名,而不是 @property 本身帮我们生成 sette…
iOS super 关键字帮我们做了什么?
本篇文章讲的是 super 的实际运作原理,如有同学对 super 与 self 的区分还有疑惑的,请参考 ChenYilong 大神的《招聘一个靠谱的 iOS》面试题参考答案(上)。 super 究竟在干什么? 官方提到的 super 关键字? 打开苹果 API 文档,搜索 objc_msgSendSup…
趣探 Mach-O:FishHook 解析
对于动态链接库里面的C函数,第一次调用的时候,我们会得到函数和实现地址的对应关系,函数的实现地址存放在一个叫la_symbol_ptr的地方,第二次调用的时候,直接通过la_symbol_ptr找到函数地址就可以,不再需要繁琐的获取函数地址的过程。(具体通过哪些过程,可以参考刚…