您的位置:首页 > 职场人生

iOS面试题6

2015-12-25 11:37 471 查看

iOS面试题6

1.简述可视化和纯代码的优缺点

可视化优点:

1)节省代码和时间

2)能够直观的看到界面布局效果

3)可以明确地看到各个控制器之间的转换关系

4)更加方便轻松地进行页面适配

5)xib设计之初的目的之一是更好地实现MVC,xib的内容大多都是view,有助于更好地实现MVC模式

6)

缺点:

1)storyboard文件一般过大,会导致加载过慢

2)团队开发的时候容易导致合并冲突

3)代码修改会覆盖xib,storyboard里面的操作导致出现bug不易查找

4)重用程度较代码编程低

纯代码优点:

1)可操控性高,能轻松修改和添加

2)重用性高,方便封装

3)易于维护和解决Bug

4)方便团队开发,冲突容易查找解决

5)有一些xib和storyboard难以实现的功能,代码可以实现

缺点:

1)代码适配相对于可视化难度大

2)需要不断地编译运行才能看到UI效果

3)纯代码布局所费时间比较长,代码冗余多

2.有没有在AppStore上架产品?描述一下上架的过程

1)创建App对应的(Distribution Certification)发布证书,(Distribution Provisioning Profile)发布授权文件,ID

生成发布授权文件并下载。

2)登录apple开发者账号,创建应用并填写应用相关信息

3)打开XCode进行上传应用。release应用,并通过product-archive或application loader上传应用

3.数据持久化方案有哪些?

1)直接写入本地

2)NSUserDefaults

3)SQLite

4)CoreData

4.沙盒目录结构是怎么样的?各自一般用于什么场合?

iOS程序默认情况下只能访问程序自己的目录,这个目录成为沙盒。

获取沙盒根路径

NSString *sandbox=NSHomeDirectory();

获取bundlePath路径

NSString *bundlepath= [[NSBundle mainBundle]bundlePath];

Documents

Library-Caches

-Preferences

tmp

Documents是最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject

Library-Caches iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject

Library-Preferences iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。

tmp iTunes不会同步此文件夹,系统可能会在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。

NSString *path = NSTemporaryDirectory()

5.介绍一下响应者链和它的工作流程

在iOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同的对象组成的层次结构,其中的每个对象将依次获得响应事件消息的机会。当发生事件时候,事件首先被发送给第一响应者,第一响应者往往是事件发生的视图,也就是用户触摸屏幕的地方。事件将沿着响应者链一直向下传递直到被接受并作出处理。一般来说,第一响应者是个视图对象或者其子类对象,当其被触摸后,事件交由它处理,如果他不处理,事件就会被传递给它的视图控制器对象ViewController(如果存在的话),然后就是它的父视图(SuperView)对象(如果存在的话),以此类推,直到顶层视图。接下来会沿着顶层视图(top
view)到窗口(UIWindow)对象再到程序(UIApplication)对象。如果整个过程都没有响应这个事件,该事件就会被丢弃。一般情况下,在响应者链中只要有对象处理事件,事件就停止传递。

一个典型的响应路线图

FirstResponder->The Window->The Application->AppDelegate

正常的响应者链流程经常被委托(delegate)打断,一个对象(通常是视图)可能将响应工作委托给另一个对象来完成(通常是视图控制器),这就是为什么做事件响应时再视图控制器中必须实现相应的协议来实现事件委托。在iOS中存在UIResponder类,它定义了响应者对象的所有方法。

UIApplication UIView等类都继承了UIResponder类UIWindow和UIKit中的控件,因为继承了UIView所以也间接继承了UIResponder类,这些类的实例都可以当做响应者。

著作权声明:本文由http://www.bestnathan.com/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: