
iOS核心知识与面试
文章平均质量分 69
不讲验证过程,只讲结论
如有讲的不对或者不周到之处还麻烦留言指正
十拿酒稳
资深 Flutter, Flutter1.0 开始就混迹在Flutter 一线
展开
-
iOS面试题与核心基础之安装包瘦身
安装包(IPA)主要由可执行文件、资源组成资源(图片、音频、视频等)采取无损压缩去除没有用到的资源:https://github.com/tinymind/LSUnusedResources可执行文件瘦身编译器优化Strip Linked Product、Make Strings Read-Only、Symbols Hidden by Default设置为YES去掉异常支持,Enable C++ Exceptions、Enable Objective-C Exceptio原创 2022-04-09 11:28:24 · 2440 阅读 · 0 评论 -
iOS面试题与核心基础之性能优化
屏幕显示过程中CPU和GPU所做的事情CPU对象的创建和销毁对象属性的调整布局计算文本的计算和排版图片的格式转换和解码图像的绘制(Core Graphics)GPU纹理渲染卡顿产生的原因CPU计算时间和GPU渲染一帧的时间超过屏幕刷新间隔时间(60分之一秒)如何优化针对CPU尽量用轻量级的对象,比如用不到事件处理的地方,可以考虑使用CALayer取代UIView(Swift则多使用结构体)不要频繁地调用UIView的相关属性,比如frame、bounds原创 2022-04-09 11:06:01 · 2310 阅读 · 0 评论 -
iOS面试与核心基础之启动优化
App启动类型APP的启动可以分为2种冷启动(Cold Launch):从零开始启动APP冷启动是指, App 点击启动前,它的进程不在系统里,需要系统新创建一个进程分配给它启动的情况。这是一次完整的启动过程。热启动(Warm Launch):APP已经在内存中,在后台存活着,再次点击图标启动APPApp 在冷启动后用户将 App 退后台,在 App 的进程还在系统里的情况下,用户重新启动进入 App 的过程,这个过程做的事情非常少。启动过程第一种划分方式启动过程可以分为三个阶段原创 2022-04-09 11:00:45 · 2773 阅读 · 0 评论 -
iOS面试题与核心基础之load&initialize
知识点loadXcode compile sources 列表越往后的参与编译越晚调用时机:+load方法会在runtime加载类、分类时调用调用特点:每个类、分类的+load,在程序运行过程中只调用一次通过函数指针分开直接调用,每个+load都会调用调用顺序:先调用类的+load按照编译先后顺序调用(先编译,先调用)调用子类的+load之前会先调用父类的+load再调用分类的+load按照编译先后顺序调用(先编译,先调用)+load方法是根据方法地址直接原创 2022-04-07 17:55:12 · 532 阅读 · 0 评论 -
iOS面试题与核心基础之线程同步(锁,串行队列,信号量,@synchronized)
线程同步,锁,atomic原创 2022-04-07 17:52:53 · 816 阅读 · 0 评论 -
iOS面试题与核心基础之分类和类拓展
分类与拓展的区别,分类为何不能添加实例变量原创 2022-04-07 17:49:07 · 397 阅读 · 0 评论 -
iOS面试题与核心基础之KVC&KVO
KVOKVO是Key-value observing,俗称键值监听(键值观察),可以用于监听某个属性值的改变。当我们在调用 addObserver:forKeyPath时,系统会在运行时动态创建NSKVONotifying_A类,同时将原来的类指针指向新创建的类。新创建的NSKVONotifying_A类是原来类的子类,目的是重写setter方法,新的setter加入了通知所有观察对象的代码。当修改instance对象的属性时,会调用Foundation的_NSSetXXXValueAndNotify原创 2022-04-07 02:09:14 · 427 阅读 · 0 评论 -
iOS面试题与核心基础之block
block本质,block变量捕获,block循环引用原创 2022-04-06 23:06:52 · 339 阅读 · 0 评论 -
iOS面试题与核心基础之定时器
定时器分类,准确性,循环引用问题原创 2022-04-06 23:03:43 · 545 阅读 · 0 评论