iOS 遇到的几个面试题

经典面试题

 

您熟悉iOS中消息传递机制吗,这个问题在面试中经常会被问到,每个应用程序或多或少,都由一些松藕和的对象构成,这些对象彼此之间要想很好的完成任务,就需要进行消息传递。

 

神马是 KVO、NSNotification 、delegate、block 以及他们之间的区别你熟悉吗

 

KVO是cocoa框架实现观察者模式,一般同KVC搭配使用,通过KVO可以监测一个值的变化,比如View的高度变化。是一对多的关系,一个值的变化会通知所有的观察者。

 

NSNotification 是通知,它也是一对多的使用场景,就好比你通过广播通知发出消息,什么人接收,接没接收到你并不在意,你在意的是把消息发送出去。在某些情况下,KVO和NSNotification是一样的,都是状态变化之后告知对方。

NSNotification的特点就是需要被观察着先主动发出通知,然后观察者注册监听后再来进行响应,比KVO多了发送通知的一步,但是其优点是监听不局限于属性的变化,还可以对多种多样的状态变化进行监听,监听范围广,使用也更灵活。

 

delegate是代理,就是我不想做的事情交给别人做,就好比中介代理商,delegate是一对一的关系。

 

block 是delegate的另一种形式,是函数式编程的一种形式。使用场景跟delegate一样,相比delegate更灵活,而且代理的实现更直观。

 

KVO一般的使用场景是数据,需求是数据变化,比如股票价格变化,我们一般使用KVO(观察着模式)。delegate一般的使用场景是行为,需求是需要别人帮我做一件事情,比如买卖股票,我们一般使用delegate。

 

函数在主线程执行的4种方法

GCD方法,通过向主线程队列发送一个block块,是block里的方法可以在主线程中执行。

dispatch_async(dispatch_get_main_queue(),^{

 

//需要执行的方法

});

 

NSOperation 方法

NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];  //主队列

NSBlockOperation *operation = [NSBlockPeration blockOperationWithBlock:^{

 

//需要执行的方法

}];

[mainQueue addOperation:operation];

 

NSThread 方法

[self performSelector:@selector(method) onThread:[NSThread mainThread] withObject:nil waitUntilDone:YES modes:nil];

 

[self performSelectorOnMainThread:@selector(method) withObject:nil waitUntilDone:YES];

 

[[NSThread mainThread] performSelector:@selector(method) withObject:nil];

 

RunLoop方法

[[NSRunLoop mainRunLoop] performSelector:@selector(method) withObject:nil];

 

iOS核心框架

CoreAnimation

CoreGraphics

CoreLocation

AVFoundation

Foundation

 

iOS核心机制

UITableView 重用

ObjC内存管理,自动释放池,ARC如何实现

runloop

runtime

Block的定义、特性、内存区域、如何实现

Responder Chain

NSOperation

GCD

转载于:https://www.cnblogs.com/rongcheng/p/5337387.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值