![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS面试题
Snaith
这个作者很懒,什么都没留下…
展开
-
iOS面试 - 蓝牙的基本使用
在 iOS 中,蓝牙是基于 4.0 标准的,设备间低功耗通信。其中 Peripheral 外设相当于 Socket 编程中的 Server 服务端,Central 中心相当于 Client 客户端。本地中心 -> 远程外设本地外设 -> 远程中心使用流程:建立中心角色 —> 扫描外设(discover)—> 发现外设后连接外(connect) —> 扫描外设...原创 2020-04-25 14:36:26 · 1936 阅读 · 0 评论 -
iOS面试 - UITableView 性能优化
一. cellForRowAtIndexPath:我们经常在注意 cellForRowAtIndexPath :中为每一个 cell 绑定数据,实际上在调用cellForRowAtIndexPath:的时候 cell 还没有被显示出来,为了提高效率我们应该把数据绑定的操作放在 cell 显示出来后再执行,可以在tableView:willDisplayCell:forRowAtIndexPa...原创 2020-04-19 23:20:12 · 347 阅读 · 0 评论 -
iOS面试 - 加密之时间戳密码(用户密码动态变化)
时间戳密码: 相同的密码明文 + 相同的加密算法,每次计算都得出不同的结果,可以充分保证密码的安全性。原理:将当前时间加入到密码中;因为每次登陆时间都不同,所以每次计算出的结果也都不相同;服务器也需要采用相同的算法,这就需要服务器和客户端时间一致。注意: 服务器端时间和客户端时间,可以有一分钟的误差(比如:第 59S 发送的网络请求,一秒钟后服务器收到并作出响应,这时服务...原创 2020-04-02 23:32:54 · 448 阅读 · 0 评论 -
iOS面试 - 消息认证码算法 HMAC
HMAC (Message Authentication Code,消息认证码算法) :利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC 主要使用在身份认证中,认证流程如下:客户端向服务器发送一个请求;服务器接收到请求后,生成一个“随机数”并通过网络传输给客户端;客户端将接收到的“随机数”和“密钥”进行 HMAC-MD5 运算,将得到的结果作为认证数据传递给服...原创 2020-04-02 23:26:09 · 341 阅读 · 0 评论 -
iOS面试 - MD5(信息摘要)哈希算法
把一个任意长度的字节串变换成一定长度的十六进制的大整数,用于确保“信息传输”完整一致。注意: 字符串的转换过程是不可逆的。MD5 特点:压缩性: 任意长度的数据,算出的 MD5 值长度都是固定的;容易计算: 从原数据计算出 MD5 值很容易;抗修改性: 对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别;弱抗碰撞: 已知原数据和其 MD5 值,想找到一个具有相...原创 2020-04-02 23:17:57 · 217 阅读 · 0 评论 -
iOS面试 - base64 加密
base64 特点:base64 编码是现代密码学的基础;把原本是 8 个 bit 一组表示数据,改为 6 个 bit 一组表示数据,不足的部分补零,每两个 0 用 一个 = 表示;用 base64 编码之后,数据长度会变大,增加了大约 1/3;虽然 base64 可以作为加密,但是 base64 能够逆运算,非常不安全!base64 编码有个非常显著的特点,末尾有个 ‘=’ 号;...原创 2020-04-02 23:01:57 · 181 阅读 · 0 评论 -
iOS面试 - SDWebImage(SDWebImage 的实现机制)
主要功能提供 UIImageView 的一个分类,以支持网络图片的加载与缓存管理 一个异步的图片加载器。一个异步的内存+磁盘图片缓存支持 GIF 图片支持 WebP 图片后台图片解压缩处理确保同一个 URL 的图片不被下载多次确保虚假的 URL 不会被反复加载确保下载及缓存时,主线程不被阻塞SDWebImage 下载的核心其实就是利用 NSURLConnection 对象来加载...原创 2020-04-02 00:02:17 · 464 阅读 · 0 评论 -
iOS面试 - KVO & KVC
KVO1. 概述KVO,是 Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接收到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO 就会自动通知相应的观察者了。2. 实现机制当某个类的对象第一次被观察时,系统就会在运行时动态地创建该类的一个派生类,在这个派生类中重写原类中被观察属性的 setter 方法,派生类在被重写的 set...原创 2020-03-30 00:26:05 · 208 阅读 · 0 评论 -
iOS面试 - runtime & 消息转发机制
runtime1. 什么是runtime?runtime 运行时机制,是一套比较底层的纯 C 语言 API , 属于1个 C 语言库, 包含了很多底层的 C 语言 API 。(引入 <objc/runtime.h> 或者 <objc/message.h> )程序运行过程时,我们平时编写的 OC 代码, 其实最终都是转成了 runtime 的 C 语言代码。在编译...原创 2020-03-25 23:38:47 · 1464 阅读 · 0 评论 -
iOS面试 - KVO、NSNotification、delegate 及 block 的区别
KVO:是 cocoa 框架实现的观察者模式,一般同 KVC 搭配使用,通过 KVO 可以监测一个值的变化,比如 View 的高度变化。是一对多的关系,一个值的变化会通知所有的观察者。使用场景:数据的变化,比如股票价格变化,我们一般使用 KVO(观察者模式)。NSNotification:通知也是一对多的使用场景,在某些情况下,KVO 和 NSNotification 是一样的,都...原创 2020-03-25 22:25:25 · 254 阅读 · 0 评论 -
iOS面试 - id、NSObject*、instancetype 有什么区别?
id:id 声明的对象具有运行时的特性,即可以指向任意类型的 Objcetive-C 的对象;id 是一个 objc_object 结构体指针,定义是typedef struct objc_object *idid 可以理解为指向对象的指针, id 可以指向所有 oc 的对象,编译器不会做类型检查;id 调用任何存在的方法都不会在编译阶段报错,当然如果这个 id 指向的...原创 2020-03-25 00:16:44 · 201 阅读 · 0 评论 -
iOS面试 - 事件传递 & 响应者链
事件的产生和传递过程:当触摸事件发生时,压力转为电信号,iOS 系统将产生 UIEvent 对象,记录事件产生的时间和类型,然后系统将事件加入到一个由 UIApplication 管理的事件队列中;UIApplication 会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会先发送事件给应用程序的主窗口(keyWindow);主窗口会在视图层次结构中找到一个最合适的视图来处理...原创 2020-03-23 00:25:09 · 534 阅读 · 0 评论 -
iOS面试 - 属性 & 成员变量
成员变量: 是不与外界接触的变量,应用于类的内部。(PS:如果你说那用 @public 外部不就是可以访问了么?确实是可以,但是 public 只能适当使用,不要泛滥,否则就像你把钥匙插在你自己家门上了,谁来都可以开门,毫无安全性。)属性: 个人认为最大的好处就是让其他对象可以访问这个变量。而且你可以设置只读、可写等等属性。记住一点,属性变量主要是用于与其他对象相互交互的变量。如果对于上面所说...原创 2020-03-22 00:20:04 · 110 阅读 · 0 评论 -
iOS面试 - layoutSubViews & drawRects
layoutSubviewsinit 初始化不会触发 layoutSubviews ;addSubview 会触发 layoutSubviews ;设置 view 的 frame 会触发 layoutSubviews,前提是 frame 的值设置前后发生了变化;UIScrollView 滚动会触发 layoutSubviews ;旋转 Screen 会触发父 UIVi...原创 2020-03-22 00:04:56 · 193 阅读 · 0 评论 -
iOS面试 - UIView & UILayer 的区别与联系
UIView:UIView 是 iOS 系统中界面元素的基础,所有的界面元素都继承自它;它本身完全是由 CoreAnimation 来实现的;它真正的绘图部分,是由一个叫 CALayer(CoreAnimation Layer)的类来管理;UIView 本身更像是一个 CALayer 的管理器,访问它的根绘图和根坐标有关的属性,例如 frame,bounds 等等, 实际上...原创 2020-03-21 23:46:12 · 1072 阅读 · 0 评论 -
iOS面试 - UIView 的 setNeedsDisplay 和 setNeedsLayout 区别是什么?
(1) 在 Mac OS 中 NSWindow 的父类是 NSResponder,而在 iOS 中 UIWindow 的父类是 UIVIew。程序一般只有一个窗口但是会有很多视图。(2) UIView 的作用:负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体、等等。(3) UIViewController:负责创建其管理的视图及在低内存的时候将他们从内存...原创 2020-03-21 00:49:44 · 164 阅读 · 0 评论 -
iOS面试 - imageName: 与 imageWithContextOfFile: 的区别?哪个性能高?
imageNamed 采用了缓存机制,如果缓存中已加载了图片,直接从缓存读就行了,每次就不用再去读文件了,效率会更高 。imageWithContextOfFile 加载,图片是不会缓存的,加载速度慢。大量使用 imageNamed 方式会在不需要缓存的地方额外增加开销 CPU 的时间。即使生成的对象被 autoReleasePool 释放了,这份缓存也不释放,如果图像比较大,或者图像比较多,...原创 2020-03-21 00:34:47 · 336 阅读 · 0 评论 -
iOS面试 - Swift和OC的区别
Swift对比OC快速、现代、安全、互动,而且明显优于 Objective-C 语言;可以使用现有的 Cocoa 和 Cocoa Touch 框架;Swift 取消了 Objective-C 的指针/地址等不安全访问的使用;提供了类似 Java 的名字空间(namespace)、泛型(generic)var、运算对象重载(operator overloading);Swift 被简单的...原创 2020-03-19 00:46:19 · 1552 阅读 · 0 评论