iOS面试题及答案 - [ 移动开发 ]

iOS面试题及答案

IOS是适用于移动设备的操作系统。 它是由Apple Inc.创建和开发的仅次于Android的第二流行和广泛使用的移动操作系统。

1. 方法可以阻止QuickTime Player在屏幕录制处于打开状态时在Yosemite上捕获iOS 8应用的流式视频?

QuickTime Player在屏幕录制期间无法通过HTTP Live Streams录制加密的媒体。 结果,这些将仅在录制的视频中消失。Apple的HTTP Live Streaming技术(HLS)允许您在iPad,iPhone,Apple TV,Mac和PC上发送和接收点播和实时视频和音频媒体。 HLS使用了与驱动Web相同的属性和过程,因此,用户可以借助普通的内容传递网络和Web服务器来使用内容。 HLS专为高可靠性而设计,并且可以动态修改自身以适应网络条件。 这是根据有线或无线设备提供的可用...详细答案>>

2. 用户如何对应用程序上的状态转换做出响应或做出反应?

用户可以以最合适的方式陈述更改,以响应状态转换。 在应用程序的委托对象上调用相应的方法或函数是这样做的一种方法。例如: 可以采用方法applicationDidBecomeActive()来安排应用程序以使其作为最前面的应用程序运行。可以在应用程序的后台运行时使用方法applicationDidEnterBackground()来执行某些代码,并且可以随时暂停练习。当应用程序移到前台并移出后台并且需要执行一些代码时,可以使用方法applicationWillEnterForeground()。当应用程...详细答案>>

3. iOS 9中增加了哪些额外功能?

学习用户习惯,最重要的是,对收集到的信息采取行动从未如此简单!凭借智能搜索和Siri智能搜索的出色机制,生活更加依赖技术,因此生活更加轻松。这些基本上可用于直接打开应用程序,而无需命令,餐厅推荐或任何类型的预订以及指导用户的日常生活,以确保日常工作的顺利进行。 Siri是iOS用户的著名个人助理。它能够创建上下文提醒,甚至可以通过搜索以创新的方式从图库中查找特定的照片或视频。它不仅可以确保我们在任何特定时间都处于需要的位置。从设备主屏幕右转到会显示“ Siri建议”。该屏幕是您所有喜欢的应用程序和联系人...详细答案>>

4. 保留与分配有什么不同?

对于Objective-C,“分配”是默认设置,因此应用于非指针属性。 而当属性是指向任何特定对象的指针时,则需要保留。

详细答案>>

5. 什么是托管对象上下文,其功能是什么?

受管对象上下文是任何应用程序中一组临时或相关对象的临时“便签本”。 它通常由方法NSManagedObjectContext()的实例表示。 这些相关对象共同代表一个或多个持久性存储内部的一致视图。 任何对象的多个副本可以在各种上下文中存在,但是托管对象的单个实例在一个以上的上下文中存在。 受管理对象上下文的主要功能包括以下内容: 生命周期的管理:在这种情况下,上下文提供了证明,撤消/重做和逆关系的处理。通知:这些表示上下文张贴在不同点的通知,可以从应用程序的另一部分观察到。并发性:当核心数据利用线...详细答案>>

6. 非原子和原子特性有何不同? 综合属性的默认属性是哪一个? 用户什么时候可以对另一个进行操作?

表示为原子的属性是始终可以肯定地返回完全初始化的对象的那些属性。 原子属性也是所有合成属性的默认规范。 通常最好将它们指定为原子的,以便完全消除混乱的可能性。 但是,原子属性的这种保证是以性能为代价的。 但是,如果属性在检索任何未初始化的值时不提供风险,则将它们设置为非原子属性实际上可以提高性能。 例如,所有对特定属性的访问都通过其他方式事先进行了同步。详细答案>>

7. Objective-C是否包含私有(private)方法?

绝对不能,Object-C编程中的私有方法不是方法。 该方法仅在.m中定义时才受到保护。 如果方法在.h中,则它将变为公共(public)。如果您确实在寻找私有方法,则必须在类中添加一个未命名的类别/local类别/类扩展名,并在类别中添加该方法并在class.m中进行定义。详细答案>>

8. 请解释IGListKit是什么?

众所周知,IGListKit会自动提供不同的对象,这些对象可用于在开始对集合视图执行批更新之前创建删除,移动和插入。 如果用户碰巧删除了正在查看的队列中的更新,则我们确保其淡出而无需下拉刷新。 这样,可以告别UICollectionViewDataSource,而可以将IGListAdapterDataSource与IGListAdapter一起使用。 数据源提供选择控制器数组,并且不返回计数或单元格。 部分控制器用于控制单元并在给定的收集视图部分中进行配置。详细答案>>

9. URLSession是什么?

当您想在请求正文中上传数据时,即协议URLSessionDataDelegate,即URL会话。 URLSession实例调用可以处理任务级事件的委托(这是特定于上载任务和数据的委托)的协议的一种定义方法。 因此,当我们计划从特定的URL检索内容时,通常选择URLConnection来使用。 基本上,有3种类型的任务: 将数据获取到内存也称为数据任务;将文件下载到磁盘也称为下载任务;从磁盘上传文件,然后将响应作为内存中的数据接收,这称为上传任务;详细答案>>

10. 在iOS中如何下载图片?

URL会话可用于下载图像作为数据,然后可以将其从NSData转换为UIImage。 之后,我们需要将其连接到UIImageView IBOutlet。 更好的方法是使用库。 借助内置的连接监视和URLSession Adaptable Connectivity API,我们可以在没有连接的情况下运行请求。 每当资源可用而不是失败时,将在等待之后下载请求。详细答案>>

11. 迭代器协议是什么?

Iterator protocol is best understood as one that is tightly linked with the Sequence protocol. As the sequences are known to provide access to its elements after creating an iterator, as it also keeps a track of the iteration process and returns one elem...详细答案>>

12. OAuth什么?

开放式授权通常被称为OAuth,通常是一种授权协议,不用于身份验证。 由于OAuth是一种授权协议,因此它只涉及可用于访问用户数据而无需标识用户或公开其凭据的第三方应用程序的授权。 它具有两个库,即OAuth2和OAuthSwift。详细答案>>

13. 请解释说明一下rethrows关键字?

rethrows是一个非常特殊的关键字,可以与可能引发错误的闭包一起使用。 通常,有重新抛出异常时,我们可以在函数内部调用错误处理程序时以及在错误处理程序被调用时将内部抛出。 关键字向编译器指示,如果闭包是在throw中传递的,则它实际上是外部函数的throwing函数,则错误将传播到当前作用域。详细答案>>

14. 请描述说明一下@objc接口?

为了表明Swift声明对Objective-C的可用性,它用@objc标记。 为了使它易于使用,在Swift 3中可以自动推断出许多声明。 最常见的地方是我们要使用选择器引用Swift方法。详细答案>>

15. 请描述一下Viper架构?

Viper架构是另一种设计模式,具有五个层,即交互器,视图,路由器,实体和演示者。 它完全基于单一责任原则。Viper架构的主要优点是它可以通过协议从一个实体到另一个实体进行通信。 想法是通过平衡实体之间的职责委派来隔离应用程序的依赖关系。详细答案>>

16. 内容偏移量是什么?

滚动scrollView时,属性可能会在此过程中被修改,这称为内容偏移量。 scrollView可以计算新边界并重绘其任何子视图。 这是contentView的原点(即边界矩形)从scrollView的原点偏移的点。

详细答案>>

17. NSLayoutAnchor是什么?

当Apple推出iOS 9时,它引入了NSLayoutAnchor类,从而使使用代码编写自动布局更加容易。NSLayoutAnchor有三个子类: NSLayoutYAxisAnchor子类用于创建垂直约束;NSLayoutDimension此子类用于创建宽度和高度约束;NSLayoutXAxisAnchor该子类用于创建水平约束;详细答案>>

18. MKAnnotation和MKPointAnnotation有什么区别?

MKAnnotation和MKPointAnnotation之间的主要区别在于MKAnnotation是协议,而MKPointAnnotation是实现MKAnnotation的类。 MKAnnotation协议由创建的NSOject子类实现。 然后,此自定义类的实例将用作映射注释。如果要在注释上使用自己的业务逻辑,则可以直接使用MKPointAnnotation。详细答案>>

19. 主线程检查器是什么?

主线程检查器是随Xcode 9启动的新工具,即主线程检查器,它检测到Apple框架(如AppKit,UIKit等)的无效使用,这些框架本应在主线程中使用,但意外地在后台线程中使用。 无效使用的结果可能会导致丢失视觉缺陷,UI更新,崩溃和数据损坏。详细答案>>

20. 栈和堆有什么区别?

代码在iOS中占用了一些空间。它的大小有时是固定的,有时可能会根据用户在程序期间输入的内容而改变。 基本上,由于这种差异,我们有两种不同的方法:Stack和Heap。 当工作完成后,将使用堆栈并自动将其自身从内存中删除。但是在堆中,用户可以通过编写用于从内存中删除的手动代码来实现。 栈 堆 栈易于使用。 与栈相比,堆相当慢。 它保存在计算机的RAM中。 如果使用不正确,则会造成内存问题。 创建的变量退出栈后会自动删除。 变量与指针一起使用。 与堆相比,它相当快。 它是在运行时创...详细答案>>

21. 请解释一下VIP(Clean-Swift)架构?

发送请求后,ViewController可以直接进行交互。 然后,交互器通过向演示者发送带有数据模型的响应来响应请求。 Presenter格式化要显示的数据会创建一个ViewModel,并通知ViewController它应基于ViewModel更新其View。 ViewController通过在Router上调用方法来决定何时应导航到另一个场景。 路由器执行下一个View Controller的设置,并处理接线,传递数据和委托设置。 与VIPER相比,不同之处在于ViewController本身会联系...详细答案>>

22. 解码(或反序列化)以及编码(或序列化)是什么?

数据转换为单个JSON或字符串的过程称为序列化。 它可以轻松传输或存储。 序列化的另一个词是编码。 通过可逆过程转换为数据时的单个字符串称为反序列化或解码。我们迅速使用一种类型可以遵循的Codable协议来声明它可以被编码和解码。 它基本上是可编码和可解码协议的别名。详细答案>>

23. 使用IBAction和IBOutlet的目的是什么?

IBOutlet和IBAction是定义为表示可以在Interface Builder中引用的方法和变量的宏。IBAction解析为void,而IBOutlet解析为空,但是的,它们向Xcode和Interface Builder表示可以在Interface builder中使用这些方法和变量来将UI元素链接到您的代码。详细答案>>

24. AlamoFire有哪些好处(优点)?

对于iOS和macOS,Alamofire是一个基于HTTP Swift的网络库。众所周知,在Apple的Foundation网络堆栈之上,它提供了一个优雅的接口来简化许多常见的网络任务。AlamoFire有以下好处(优点): 创建路由需要AlamoFire,这意味着如果创建请求,则可以通过一个静态函数将其执行到服务器。它可以提供用于链接返回的请求的方法,这样可以轻松添加处理响应和标头。它还具有一定数量的响应处理程序,通常以解析JSON,文本,二进制形式返回,甚至可以将多个处理程序用于给定请求。Ala...详细答案>>
注: 此试题仅作为相关知识水平测试,不能作为权威试题和答案。非商业转载注明原文链接即可;商业转载需本站授权同意。