所谓分发方式简单点讲就是你的app都可以通过哪些途径给用户使用。
a:个人或者公司的开发者账号可以上传appStore,用户通过appStore下载。
b:企业账号:打包分发。
d:通过第三方:比如蒲公英。公司组织测试的时候,就是将项目导包上传,然后通过扫码或者链接下载。前提也是先需要下载证书。
面试官问的是UIWebView加载H5页面需要做哪些优化。其实这个问题需要具体问题具体分析,主要是看你页面怎么排版以及H5页面的内容,有些问题因为H5中自己处理了,就不再需要手动处理了。
scalesPgeToFit=yes;//页面自适应
(1)SDWebImage缓存机制:关于这个问题既不是问原理也不是问如何进行缓存,所以我也不太明白要回答些啥。
(2)使用SDWebImage下载图片需要导入那个头文件:#import"SDWebImageManager.h"
[[SDWebImageManagersharedManager]downloadImageWithURL:[NSURLURLWithString:@"anurl"]options:0progress:^(NSIntegerreceivedSize,NSIntegerexpectedSize){//处理下载进度}completed:^(UIImage*image,NSError*error,SDImageCacheTypecacheType,BOOLfinished,NSURL*imageURL){completedCount++;if(error){DDLogDebug(@"erroris%@",error);}if(image){//图片下载完成}}}];#import"SDImageCache.h"缓存图片
注:自己编写的单例需要使用GCD
eg:
+(SaveInfo*)shareDataModle{
staticdispatch_once_tpred;
staticSaveInfo*currentUser;
dispatch_once(&pred,^{
currentUser=[[SaveInfoalloc]init];
});
returncurrentUser;
}
masonry/storyboard上建约束(也可以手动建)
6.1Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系?
Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言
区别:语法;
联系:swift与Objective-C共用同一套运行时环境;在同一个工程中可以同时使用两者。
因为Swift是强类型语言,为了解决nil类型不详的问题,不得不引入Optional封装nil,nil有了类型后,才能融入强类型语言范畴6.3请解释一下NSError。在Swift中,什么情况下能使用NSError,什么情况下不能?
NSError:专门处理错误的类。
Swift现在应该是通过返回一个元组的方式来处理错误的。在写新代码的时候采用这种方式。当使用以前的代码或库,即,需要传error指针的时候,还是采用以前的方式吧
6.4请说明如何使用Instancetype及其重要性。
instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!好处:确定对象类型帮编译器更好定位代码问题。6.5在Swift中,什么时候该用let,什么时候该用var?
a.是否熟知CocoaPods?它是什么?如何运行的?
CocoaPods:是一个用来帮助我们管理第三方依赖库的工具
作用:解决库与库之前的依赖关系
运行:在ruby下通过命令行运行
c.请概括一下你在构建iOS应用时的测试过程。iOS应用如何实现对其他语言、日期格式以及货币单位的支持?
d.请描述一下Instruments及其作用。
Instruments一个很灵活的、强大的工具,是性能分析、动态跟踪和分析OSX以及iOS代码的测试工具
1.请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的。
Handoff:是在OSX和iOS中引入的一种功能,可以在与同一用户关联的多个设备之间传输用户活动。
2.iCloud包含了哪些技术与服务?
iCloud是苹果公司所提供的云端服务
包含以下服务:在线邮件;在线通讯录;在线日历;在线备忘录;在线提醒事件;查找我的iPhone;iWork,支持在线编辑文档、数据表格和幻灯片
补充:iCloud备份与iTunes备份的区别:
iCloud云端备份,速度比较慢且备份不全;iTunes在本地电脑上备份,备份速度快,可以全盘备份
扩展(Extension):通常指的是类扩展
补充:分类跟扩展的异同
同:都可以为类添加额外的方法
4.HealthKit是什么?
HealthKit:是一个框架,用来与苹果的健康应用做数据交互.
5.HomeKit是什么?
HomeKit:是一个库,用来沟通和控制家庭自动化配件的
6.ApplePay是什么?能否描述一下如何在应用中使用ApplePay?
applepay:是苹果开发的一种移动支付功能,相当于支付宝,绑定自己的信用卡或者借记卡,付款时直接用applepay付款。
7.请解释一下iOS应用沙盒机制。
iOS应用程序只能在为该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒。
8.VoiceOver是什么?请举例解释一下iOS中的辅助功能(Accessibility)。开发者如何使用这些功能?
VoiceOver:是苹果手机上一个给视力不好或者盲人使用应用程序的语音辅助软件。
10.GameCenter针对iOS游戏有哪些功能?
GameCenter(苹果游戏中心)是专为游戏玩家设计的社交网络平台。借助GameCenter,用户可以收发好友请求,可以邀请好友通过互联网参与多人游戏。
11.iBeacons是什么?
iBeacons:是iOS7新推出的特性。它给予当前最新的蓝牙低功耗4.0技术,可以用它来建立打造一个信号基站,当用户持有iOS设备进入该区域时,就会获得该基站的推送信息。而且它有个天然的优势就是在室内时,由于各种障碍物阻挡,用iBeacons技术搭建的基站要比GPS定位更好
12.Cocoa/CocoaTouch是什么,包含什么,不包含什么?
13.请概括一下CoreAudio,CoreData以及CoreLocation各是什么。它们对iOS应用有何意义?
CoreAudio:是iOS和Mac关于数字音频处理的基础,它提供应用程序处理音频的一组软件框架,所有关于iOS的音频开发接口都是由CoreAudio来提供或它提供的接口来封装实现的。
CoreData:是iOS和Mac用语数据物理存储提供的一组软件框架,它支持数据库(sqlite)存储以及文件存储方式;而CoreData则提供了存储管理,它有插入,查询,删除更新等一系列操作。
CoreLocation:是iOS提供的定位服务功能;提供各种各样的API,根据不同的API可以获取各个精度的地理位置。
14.请描述SpriteKit和SceneKit的作用。
SpriteKit在IOS和OSX中均可使用,它使用主机设备提供的图形硬件来高帧速率合成2D图片;
SceneKit可以同时在IOS和OSX下工作,是用来构建3D场景的框架,且可以与CoreAnimation和SpriteKit无缝交互。在SceneKit中可以直接引入COLLADA行业标准文件制作好的3D模型或场景。
15.Metal是什么?
在iOS8中,苹果发布了一个新的接口叫做Metal,它是一个支持GPU加速的3D绘图API。Metal和OpenGLES类似,也是一个底层API,负责和3D绘图硬件交互。可惜的是,Metal不是跨平台的OpenGLES(OpenGLforEmbeddedSystems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。提供2D和3D绘图工具的一个框架需要导入OpenGLES.framework框架
响应链:是由响应者(Responderobject)之间的touch消息传递以及检测组成,我们也可以理解为响应链是由响应者组成
传递的方向就是从最上面的view向下传递,如果view是viewcontroller的view,还会经过viewcontroller之后在向下传递,最终到达app对象。
17.按钮和其他控制方式对哪些操作做出回应?
点击事件,跳转事件等18.AppDelegate扮演着什么样的角色?
AppDelegate为整个应用的一个代理,提供程序启动、退出等类似监控的接口,控制着应用的生命周期。
19.请解释一下NSUserDefaults。就你而言,你会如何在磁盘中对数组对象进行序列化?
NSUserDefaults是一个用于数据存储的类。
序列化:给这个对象的类实现NSCoding协议,然后直接将整个数组归档;将对象转换为字典,然后再归档或者直接writeToFile;将对象转换为字典,然后转换为JSON或者XML并保存。
20.你会如何储存用户的认证信息?
如果是用户名/密码等可存本地.重要信息可存Keychain。
21.请问何为Keychain服务?
22.为什么移动设备上的缓存和压缩是不可或缺的?
缓存跟压缩都是减少内存占用的方法,而内存对于用户来说是非常宝贵的。
23.请解释一下~/Documents,~/Library和~/tmp。iOS中的~属于什么目录?
Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。
Library:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
tmp:提供一个即时创建临时文件的地方。(临时目录)
24.AirPlay是如何运行的?换做是你,你会如何通过编程提高应用的实用性以及演示效果?
AirPlay(简称AP,中文名称:飞乐)是一款小巧的免费音频播放器,有简体中文和繁体中文两个语言版本。运行:是通过网络实现投放声音和视频信息的,当然还得要有一个接受AirPlay的设备装置。25.传感器,IO以及WiFi、拨号等连接方式如何在iOS平台上运作?它们有何利用价值?请扼要地谈谈你的观点。
26.iPad2,iPadmini1-3,iPadRetina,iPadAir2,iPhone5、5S、6以及6+在硬件性能方面有何差异?这对注重性能的应用有何限制?
屏幕尺寸;机身颜色;重量等都不一样;
1.CocoaTouch包含什么?不包含什么?
包含:UIKit/Foundation;不包含:Media/CoreServices/CoreOS
2.为什么CocoaTouch的类名称是以两个大写字母开头的?
OC没有命名空间的概念,使用这样大写字母前缀的方式可以有效的避免命名冲突的问题。
3.为什么map函数必不可少?该在什么情况下使用它?
map是一种基本的数据结构,它提供了很好一对一的关系,能够非常方便的进行查找;在需要使用一对一关系的时候使用。
4.你会选择什么工具来追踪Bug?
友盟的错误捕捉分析。
5.如果在Cocoa中发现一个Bug,你会如何处理?
断点调试,找到bug出现的地方与原因分析,然后进行修改
6.如果应用的新版本出现了Regression的情况,该如何补救?如何防止用户在使用过程中遇到新的Bug?
了解为什么会出现RegressionBug。例如是Regression测试覆盖不够全面,还是其他什么原因。修正问题,追加对应的测试项,重新Regression测试。
7.Objective-C的类是怎么执行的?Objective-CRuntime是如何实现的?
8.iOS是如何提高安全性,保护用户隐私信息的?
9.应用可以下载并即刻显示数据。如何根据MVC来判断下载的最佳位置?
10.MVC对代码库(Codebase)的设计有何影响?
使得代码库耦合性低,重用性高,可维护性高
11.ControllerLife-Cycle以及ViewLife-cycle分别有哪些调试方法?
断点调试,打印调试等
单例模式;工厂模式;观察者模式;代理模式;MVC;
13.iOS提供哪些线程?如何充分利用这些线程?
NSThread/GCD/NSOperation
14.请简要描述一下UIScrollView的执行过程。它是如何响应手势识别(GestureRecognizer)、多点触控(Multi-Touch)和RunLoop的?
15.你认为iOS需要添加或改进哪些API?
1.iPhone5、6、6+以及iPadAir2的屏幕分辨率分别是多少?
2.分辨率的计算单位是什么?
像素
3.请解释一下InterfaceBuilder的作用以及NIB文件的概念。
InterfaceBuilder(IB)是MacOSX平台下用于设计和测试用户界面(GUI)的应用程序(非开源)。
作用:可以利用它合理地划分项目时,可以避免很多潜在的冲突。
NIB文件:Nib文件是InterfaceBuilder文档,是基于磁盘的资源文件,用于存储一或多个对象的快照
4.iOSUI的图像储存类型是什么?
NSData
5.请描述一下Storyboard和标准NIB文件的差别。
6.设备状态栏(DeviceStatusBar)是什么?高度如何?是否透明?在手机通话或者导航状态下,它是如何显示的?
高度:20默认不透名
7.导航栏(NavigationBar)是什么?能否拿出你的iPhone,指出你下载的哪些应用运用了导航栏?
8.选项卡(TabBar)和工具栏(Toolbar)分别是什么?两者之间有何共同点和不同点?
TabBar:提供一种机制来显示一个选项卡位于屏幕底部的工具栏和支持显示和选择的选项卡栏项(UITabBarItem的实例)。您可以使用UITabBarDelegate指定自定义视图选项卡栏项。
Toolbar:提供一种机制来显示一个工具栏在屏幕的底部和支持显示和选择的工具栏项目(UIToolbarItem的实例)。您可以使用UIToolbarDelegate指定自定义工具栏项目视图。
共同点:都可以添加Button和Label控件
不同点:TabBar上只能添加,TabBarItem控件;前者不能修改位置和高度
9.表视图(TableView)是什么?集合视图(CollectionView)又是什么?
TableView:是用于数据显示的控件
CollectionView:用于展示集合视图,布局更加灵活,可实现多列布局。用法与tableView相似。
10.什么时候用“弹出(Popover)”属性最为合适?
需要弹出以及隐藏控件的时候。
11.Split-viewController是什么?
12.选取器视图(PickerView)适合存放哪类内容?
string类型的字符串等
13.应该在什么情况下使用标签、文本域和文本视图?
标签(UILabel):展示少量数据
文本域(UITextView):输入大量内容
文本视图(UITextField):输入少量数据
14.分段控件(SegmentedControl)的作用是什么?
分段控件让用户在一屏内就可以查看到不同分类的内容,而不需要切换到其他屏幕。
15.模态视图(ModalView)是什么?
对于模态视图和普通视图最主要的区别就是模态视图显示的时候不能对其他视图进行操作。主要用来收集或显示一些信息。
16.iOS通知属于什么类型?
1.iOS应用图标是指什么?请尽可能详细地描述一下。
2.最小尺寸和最大尺寸的应用图标分别是什么样子的?
3.应用图标能否包含透明的部分?
不能
4.Newsstand的图标与常规应用有何不同?
“Newsstand”,有“报摊”之意。该版块分三部分:1.Newspapers报纸2.Magazines杂志3.数字信息
5.请解释一下启动画面(LaunchImages)。
什么是启动画面:启动应用程序后,进入主功能界面前会有一张图片或一段动画效果,停留数秒钟后消失。这张图片或这段动画效果我们称之为应用的启动画面。
为什么需要启动画面:提高用户体验。
6.自动布局(AutoLayout)的作用是什么?请概括一下它是如何运行的。
作用:给视图添加约束并且定义他们之间的关系
7.设计软件时为什么要加上动画?
提高用户体验。
8.请描述一下软件设计中的交互和Feedback有什么作用。
帮助产品功能的完善,提高用户体验。
9.设计iPhone和iPad应用时,应分别考虑哪些因素?
考虑是出单版还是通用版,这就要考虑不同的分辨率
10.请描述一下原型设计对于软件开发的意义。其作用是什么?
确保页面的美化。
1.应用内购买(In-AppPurchases)是怎么回事?IAP能够为用户带来哪些新体验?
应用内购买可以让开发者通过苹果的StoreKit框架在应用中内嵌一个商店。通过应用内购买,开发者可以开发一个基本的应用,并且在应用商店销售额外的功能和内容
2.你是否在AppStore上发布过应用?能否概括一下过程?
3.iTunesConnect是什么?
4.ProvisioningProfiles是指?
配置文件
5.AppID是什么?
应用程序软件编号
6.iOS的开发和发布签名证书有何异同?
开发证书是用来测试的,需要将设备绑定到账号,才可以识别,在真机调试的时候可以看程序打印;发布证书主要用来打包发布APP用的,也可用于真机调试,但是看不到程序打印。7.如何使用TestFlight?通过Ad-hoc发布应用的话,该如何使用UUID?
到appStore上下载TestFlight,需要别人邀请,才能使用。
Ad-hoc是苹果公司是为应用发布提供的一种发布前测试方法,所要安装的设备无需破解。其用途在于:如果你开发了一款iphone应用,想在发布之前,让周围人帮忙测试一下。这时,你需要得到测试人的iphoneUDID,生成一个Ad-hoc应用,并将该应用和对应的mobileProvision打包发给测试对象。测试对象在收到以上两个文件后,开始安装。iPhoneAd-hoc应用安装步骤如下:1.打开iTunes,选中Library区域的Application页面,将所要安装的应用程序.app文件和mobileprovision文件拖放到该应用页面中。这时,会出现一个应用程序图标;2.在iTunes页面,选中(iPhone、itouch、iPad)设备,进入“应用”项,勾选所要安装的应用,点击“同步”按钮,应用开始同步到设备中。在同时时,要注意观察iTunes工具栏区域的同步进度条,确认是否显示该应用的名称。只有出现了该应用名称的同步进度条,才能肯定该应用确实已经被同步到设备中。注意:在同步过程中不要断开数据线。安装完成后,设备的主屏(HomeScreen)上会出现所安装的应用程序图标8.应何时验证购买收据?
app发送支付请求到appstore-》appstore处理支付请求,返回transaction信息-》app将transactionreceipt发送到服务器-》服务器收到收据后发送到appstroe验证收据的有效性-》appstore返回收据的验证结果-》根据appstore返回的结果决定用户是否购买成功
1.谈一谈你常用的开发工具都有哪些优势?
便捷的代码管理器,自动生成类关系图、函数方法列表等;
2.你最敬佩的独立Mac或者iOS应用开发者是谁?
3.最喜欢什么项目?哪种类型的?
购物类型的吧。
4.你觉得Xcode有哪些需要改进的地方?
崩溃提示。
5.iOS上你最喜欢哪些API?
6.是否有最中意的错误报告?
7.你最爱以哪种方式来检验一项新技术是否好用?
语法是否简洁等;
8.为什么词典被称作Dictionaries,而不是HashTable或HashMap?
为了与java中的字典(HashMap)区分;java中的hashMap允许空key跟空value,而ios中是不允许空key的。
other:
1.UIViewanimateWithDuration中的block使用self是否会导致循环引用,为什么?
不会,因为这是一个类方法,当前的self并没有直接或间接持有这个block;(animationframework->block->self)