2019面试题
1.swif与OC的区别
- swift没有地址指针的概念
- 泛型
- 类型严谨对比OC的动态绑定
2.编译连接
- id和instancetype的区别
- instancetype只能返回值编译时判断真实类型,不符合发警告
- 特殊情况:关联类型返回方法如类方法alloc或者new开头实例方法中,以autorelease,init,retain,或self开头
3.synthesize & dynamic
1、通过@synthesize指令告诉编译器在编译期间产生getter/setter方法
2、通过@dynamic指令,无法自己实现方法。
有些存取是在运行时动态创建的,如在CoreData的NSManageObject类。
4.在项目开发中常用的工具有哪些
- instrument
- beyondCompare
- git
5.UlTableView & UlCollection
- UlCollectionView是iOS6新引进的API,用于展示集合视图,布局更加灵活,其用法类似于UITableView。
- 而UICollectionView、UlCollectionViewCell与UITableView、UITableViewCell在用法上有相似的也有不同的,下面是一些基本的使用方法:对UITableView,仅需要UITableViewDateSource,UITableViewDelegate这两个协议
- 使用UlCollectionView需要实现:UICollectionViewDataSource,UlCollectionViewDelegate,
UlCollectionViewDelegateFlowLayout这三个协议. - 这是因为UlCollectionViewDelegateFlowLayout实际上是UCollectionViewDelegate的一个子协议,它继承了
UlCollectionViewDelegate,它的作用是提供一些定义UlCollectionView布局模式的函数
6.NSProxy & NSObject
- NSObject协议组对所有的Object-C下的objects都生效。如果objects遵从该协议,就会被看作是first-class(一级类)。另外,遵从该协议的objects的retain、release、autorelease等方法也会服从objects的管理和在Foundation中定义的释放方法。一些容器中的对象也可以管理这些objects,比如说NSArray和NSDictionary定义的对象,Cocoa的根类也该遵循该协议,所以所有集成NSObject的objects都有遵循该协议的特性。
- NSProxy:NSProxy是一个虚基类,它为一些表现像其他对象替身或者并不存在的对象定义一套API。一般发送给代理的消息被转发给一个真实的对象或者代理本身load(或者将本身转换成)一个真实的对象。NSProxy的基类可以被用来透明的转发消息或者耗费巨大的对象的lazy初始化。
7.Object & Swift
- Obejective-C复杂的语法,更加简单易用、有未来,让许多开发者心动不已.
- 苹果宣称Swift的特点是:快速、现代、安全、互动,而且明显优于Objective-C语言
可以使用现有的Cocoa和Cocoa Touch框架,Swift取消了Objective C的指针及其他不安全访问的使用 - 舍弃Objective C早期应用Smalltalk的语法,全面改为句点表示法提供了类似Java的名字空间(namespace)、泛型(generic)、运算对象重载(operator overloading) Swift 被简单的形容为“没有C的Objective-C” (Objective- C without theC)为苹果开发工具带来了Xcode-Playgrounds功能,该功能提供强大的互动效果,能让Swift源代码在撰写过程中实时显示出其运行结果;
- 基于C和Objective-C,而却没有C的一些兼容约束; 采用了安全的编程模式;界面基于Cocoa和Cocoa Touch框架;保留Smaltalk的动态特性
8.传值通知&推送通知(本地&远程)
传值通知:类似通知,代理,Block实现值得传递
推送通知:推送到用户手机对应的App上(主要是不再前台的情况)本地通知。
local notification 用于基于时间行为的通知,比如有关日历或者todo列表的应用。另外,应用如果子啊后台执行,iOS允许它在受限的时间内运行,它也会发现本地通知有用。比如,一个应用,在后台运行,向应用的服务器端获取消息,当消息到达时,比如下载更新版本的消息,通知本地通知机制通知用户。
本地通知是UILocalNotification的实例,主要有三类属性:
- scheduled time,时间周期,用来指定iOS系统发送通知的8期和时间;
- notification type,通知类型,包括警告信息、动作按钮的标题、应用图标上的badge