iOS面试必备:Runloop深度解析与应用

需积分: 49 26 下载量 15 浏览量 更新于2024-07-17 1 收藏 17.03MB PDF 举报
"这篇资源是关于iOS面试的经典题目集合,包含答案,主要针对那些准备进行iOS职位跳槽面试的人员。讨论的核心知识点是Runloop及其相关概念,包括Runloop的模式、源(Source)和观察者(Observer)等。" 在iOS开发中,Runloop是一个至关重要的概念,它管理着应用程序的事件循环,确保应用在没有工作时能够进入低功耗状态,同时在需要处理事件时能够及时响应。Runloop的主要职责是调度任务,确保程序不会因为等待某个长时间运行的操作而阻塞。 1. Runloop的理解与类型: - Runloop是由Cocoa Touch和Core Foundation框架提供的,用于管理线程执行的机制。每个主线程都有一个默认的Runloop,而其他线程可以手动创建和配置。 - Runloop有多种运行模式(Mode),如kCFRunLoopDefaultMode(应用的默认模式)和UITrackingRunLoopMode(适合滚动视图)。不同的模式对应着不同类型的事件处理。 2. Runloop的模式: - kCFRunLoopDefaultMode:这是应用程序的主要模式,大部分时间runloop都在这个模式下运行。 - UITrackingRunLoopMode:当用户在UIScrollView上滑动时,runloop会切换到这个模式,以便持续响应用户的滚动操作,提高滚动的流畅性。 - NSRunLoopCommonModes:这是一个组合模式,包含了kCFRunLoopDefaultMode和UITrackingRunLoopMode,使得事件能在这些模式间共享。 3. Runloop的组成部分: - Mode:定义了runloop在哪些情况下应该监听哪些事件。 - Source:分为Source0和Source1。Source0通常用于处理系统事件,如触摸事件;Source1则用于自定义的异步回调。 - Observer:允许我们监听runloop状态变化,例如在runloop开始、结束或进入特定模式时执行某些操作。 - Timer:定时器,可以在指定的时间间隔后触发事件。 4. Observer的使用: - 观察者可以设置在特定模式下触发,用于监控runloop的状态变化,比如在runloop即将进入休眠或唤醒时执行特定操作。 - Observer的类型包括进入循环、退出循环、进入特定模式和离开特定模式等。 5. Source0和Source1: - Source0是非端口源,通常与系统的事件源关联,如触摸事件,它们会立即唤醒runloop并处理。 - Source1是端口源,通常用于异步通信,如接收网络数据,它们需要手动调用`CFRunLoopSourceSignal`来触发runloop。 6. Timer的使用: - 定时器是runloop的一个重要组件,可以设定在未来某一时刻触发事件,但需要注意的是,定时器不是精确的,它依赖于runloop的运行。 这些面试题涉及到的知识点涵盖了Runloop的基本原理、工作模式以及如何与其它系统组件交互,对于iOS开发者来说,深入理解Runloop可以帮助优化应用性能,确保良好的用户体验。通过掌握这些内容,开发者可以更好地处理线程间的协调,优化内存使用,以及提高应用的响应速度。
2018-12-09 上传
程序主要有两个部分组成,一个程序的显示部分,一个程序的设置部分,显示部分主要是一个可以用手指拖动圆形小球,设置部分主要是对小球的颜色和大小进行参数设置。 1.1 View-ViewController 主要有三个ViewController,一个是用于显示的MainViewController,还有一个是用于设置的SetingsViewController,还有一个是用于设置小球颜色ColorSettingViewController. 一个RoundBallView,进行显示小球的View。 程序第一次开启的时候,小球的坐标是界面上一个(30,30)这个位置,小球颜色为红色,直径为50像素。SettingsView的Color选项为Red,Size为最小值50。ColorSettingView的CheckMark为Red。 MainView主要对小球进行拖动操作,程序重启后,小球的位置是最后一次拖动的坐标。 SetingsViewController的第一表格引导进入ColorSettingView,SetingsViewController的第二表格设置小球大小的变化,MainView始终保持小球最后一次设置的大小,小球的直径的最大值为100,最小值为50。 在ColorSettingViewController进行颜色参数的改变后能直接引起MainViewController中小球颜色对应变化,还有SetingsView的当前颜色的文字描述的对应变化,还有ColorSettingView自身的CheckMark的所在行。 程序开启的时候始终保持上次最终的状态。 MainView进入SetingView为垂直进入,SetingView进入ColorSettingView为导航横向进入。 1.2 Controller MainViewController,SetingViewController ,ColorSettingViewController三个都是简单ViewController,MainViewController,SetingViewController可以直接继承UIViewController, ColorSettingViewController继承UITableViewController