自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翱翔在空中

希望对你有帮助

  • 博客(17)
  • 收藏
  • 关注

原创 面试问题 KVO、KVC

什么是KVO?什么是KVC?KVC的底层实现KVO底层实现原理KVO基于Runtime机制实现 当一个类(A)的属性被观察的时候,系统会通过runtime动态的创建一个A类的派生类(B)  B类继承于A类  将A类的isa指针指向B类  在B类中重写被观察的属性的setter方法  重写的setter方法会在调用原setter方法前后,通知观察对象值得改变消息转发...

2018-11-26 14:44:54 467

原创 面试问题 单例

单例在程序中,一个单例类在程序中只能初始化一次,为了保证在使用中始终都是存在的,所以单例是在存储器的全局区域,在编译时分配内存,只要程序还在运行就会一直占用内存,在APP结束后由系统释放这部分内存内存。优点在整个程序中只会实例化一次,所以在程序如果出了问题,可以快速的定位问题所在; 由于在整个程序中只存在一个对象,节省了系统内存资源,提高了程序的运行效率;缺点不能被继承,不能有...

2018-11-26 14:01:36 149

原创 面试问题 RunLoop

RunLoopRunloop是事件接收和分发机制的一个实现。 Runloop提供了一种异步执行代码的机制,不能并行执行任务。 使用 当需要和该线程进行交互的时候才会使用Runloop.每一个线程都有其对应的RunLoop,但是默认非主线程的RunLoop是没有运行的,需要为RunLoop添加至少一个事件源,然后去run它。 特点 当有时间发生时,Runloop会根据具体的事件类型通知...

2018-11-26 13:58:24 163

原创 面试问题 property

property的属性readwrite: 可读可写属性,默认是这个属性,需要生成getter和setter方法。 readonly: 可读属性,不可写。只会生成getter方法不生成setter方法。 nonatomic: 非原子属性,线程不安全的,无锁。但更经常用nonatomic,在多线程并发访问时会提高性能。 atomic: 原子属性,线程安全,有锁。 copy: 建立一个索引...

2018-11-26 09:33:14 163

原创 面试问题 线程、队列

串行队列+同步任务:不会开启新的线程,任务逐步完成。 并发队列+同步任务:不会开启新的线程,任务逐步完成。 串行队列+异步任务:开启新的线程,任务逐步完成。 并发队列+异步任务:开启新的线程,任务同步完成。队列和任务并发跟串行属于队列 同步跟异步属于执行任务 同步异步的区别同步会卡死线程,一个线程要等待上一个线程执行完之后才能执行当前的线程 异步同时去做两件或者多件事。队列...

2018-11-26 09:33:02 130

原创 面试问题 AFN/SD

NSURLSession和NSURLConnection区别NSURLConnection 随ios7一起发布,是对NSURLConnection进行了重构优化后的新的网络访问接口。从iOS9.0开始, NSURLConnection中发送请求的两个方法已过期(同步请求,异步请求),苹果官方不再推荐使用。下面就将NSURLConnection与NSURLSession的区别进行简单的对比。...

2018-11-23 17:07:16 660

原创 面试问题 Runtime

RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数(C语言的函数调用请看这里)。编译完成之后直接顺序执行,无任何二义性。OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会...

2018-11-23 17:03:53 81

原创 面试问题 耗电量/性能优化

不要频繁的刷新页面,能刷新1行cell最好只刷新一行,尽量不要使用reloadData懒加载,不要一次性创建所有的subview,而是需要时才创建.重用 可以模仿UITableView和UICollectionView,不要一次性创建所有的subview,而是需要时才创建.完成了使命,把他放入到一个可重用集合中图片处理 避免多余运算cache,cache,cache缓存所有需要的...

2018-11-23 17:01:24 192

原创 面试问题 内存管理

MRC遵循原理谁创建,谁释放,谁引用,谁管理 当引用计数为0的时候,必须回收,引用计数不为0,不能回收,如果引用计数为0,但是没有回收,会造成内存泄露。如果引用计数为0,继续释放,会造成野指针。为了避免出现野指针,我们在释放的时候,会先让指针=nil。 alloc 分配内存空间 retain引用计数+1 release 引用计数-1 retainCount获取当前对象的引用计数值 ...

2018-11-23 16:59:30 106

原创 面试问题 Http/Https

Http应用层 网络层 传输层 链路层Http属于超文本传输协议,客户端给服务器发送请求,服务器响应。是一个基于请求与响应模式简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。http请求由三部分组成,分别是:请求行、消息报头、请求正文域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --&...

2018-11-23 16:31:12 305

原创 面试问题 TCP/UDP

TCP 面向链接 传递通过数据流的方式 TCP建立连接的三次握手过程 TCP/IP协议集包括应用层,传输层,网络层,网络访问层。 TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机...

2018-11-23 16:19:26 335 1

原创 RVM安装、自动化打包Fastlane安装,iOS企业级自动化打包

安装Fastlane 环境  fastlane的githttps://github.com/fastlane  fastlane相关文档https://docs.fastlane.tools  本机环境如下图: 所使用的是Xcode9;一、首先需要安装rvm  RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。  1 、安装命令...

2020-01-08 17:41:07 410

原创 面试问题 简单的数据结构

集合结构  线性结构  树形结构  图形结构集合结构 说白了就是一个集合,就是一个圆圈中有很多个元素,元素与元素之间没有任何关系  这个很简单   线性结构 说白了就是一个条线上站着很多个人。 这条线不一定是直的。也可以是弯的。也可以是值的 相当于一条线被分成了好几段的样子 (发挥你的想象力)。 线性结构是一对一的关系 树形结构 说白了  做开发的肯定或多或少的知道xml 解析  树形结构...

2018-11-26 14:49:47 268

原创 面试问题 什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步?

1.对象未实现该方法。2.对象已经被释放。当发送消息的时候,我们会根据类里面的methodLists列表去查询我们要动用的SEL,当查询不到的时候,我们会一直沿着父类查询,当最终查询不到的时候我们会报unrecognized selector错误当系统查询不到方法的时候,会调用+(BOOL)resolveInstanceMethod:(SEL)sel动态解释的方法来给我一次机会来添加,...

2018-11-23 17:18:50 557

原创 面试问题 常问的基础框架

Foundation 提供OC的基础类(像NSObject)、基本数据类型等 UIKit 创建和管理应用程序的用户界面 QuartzCore 提供动画特效以及通过硬件进行渲染的能力 CoreGraphics 提供2D绘制的基于C的API SystemConfiguration 检测当前网络是否可用和硬件设备状态 AVFoundation 提供音频录制和回放的底层API,同时也负责管理音频...

2018-11-23 17:18:00 244

原创 面试问题 数据持久性

数据存储有四种方案NSUserDefault、KeyChain、file、DB。 其中File有三种方式:plist、Archive(归档) DB包括:SQLite、FMDB、CoreData

2018-11-23 17:15:14 229

原创 面试问题 App启动、控制器生命周期

程序启动完成  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions   程序将要进入后台  - (void)applicationWillResignActive:(UIApplication *)application  *程序进入后台  - (void)applicationDi...

2018-11-23 17:11:07 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除