ios开发工程师要求基础面试题:Cocoa Touch包含什么?不包含什么?为什么Cocoa Touch的类名称是以两个大写字母开头的?Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系?为什么Optional在Swift语言中非常重要?请解释一下NSError。在Swift中,什么情况下能使用NSError ,什么情况下不能?请说明如何使用Instancetype及其重要性。在Swift中,什么时候该用let,什么时候该用var?为什么map函数必不可少?该在什么情况下使用它?你会选择什么工具来追踪Bug?如果在Cocoa中发现一个Bug,你会如何处理?如果应用的新版本出现了Regression的情况,该如何补救?如何防止用户在使用过程中遇到新的Bug?Objective-C的类是怎么执行的?Objective-C Runtime是如何实现的?iOS是如何提高安全性,保护用户隐私信息的?应用可以下载并即刻显示数据。如何根据MVC来判断下载的最佳位置?MVC对代码库(Codebase)的设计有何影响?Controller Life-Cycle以及View Life-cycle分别有哪些调试方法?iOS使用的是哪些设计模式(Design Patterns)?你的代码库使用的是哪些设计模式?iOS提供哪些线程?如何充分利用这些线程?请简要描述一下UIScrollView的执行过程。它是如何响应手势识别(Gesture Recognizer)、多点触控(Multi-Touch)和Run Loop的?你认为iOS需要添加或改进哪些API?