2020年度iOS工程师面试题谈谈你对多线程开发的理解?iOS中有几种实现多线程的方法?
好处:1、使用线程能够把程序中占据时间长的任务放到后台去处理,如图片、视频的下载2、发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好缺点:1、大量的线程降低代码的可读性,2、更多的线程需要更多的内存空间3、当多个线程对同一个资源出现争夺的时候要注意线程安全的问题。iOS有三种多线程编程的技术:1、NSThread(两种创建方式)[NSThreaddetachNewThreadSelector:***@selector(doSomething:)toTarget:selfwithObject:nil];NSThread*myThread=[[NSThreadalloc]initWithTarget:selfselector:***@selector(doSomething:)object:nil];[myThreadstart];2、NSOperationQueueNSOperationQueue*oprationQueue=[[NSOperationQueuealloc]init];oprationQueueaddOperationWithBlock:^{//这个block语句块在子线程中执行}3、GrandCentralDispatch(GCD)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{//耗时的操作dispatch_async(dispatch_get_main_queue(),^{//更新界面});});PS:不显示的创建线程的方法:用NSObject的类方法 performSelectorInBackground:withObject:创建一个线程:[ObjperformSelectorInBackground:***@selector(doSomething)withObject:nil];线程同步和异步的区别?IOS中如何实现多线程的同步?
同步:一个线程要等待上一个线程执行完之后才能执行当前的线程,生活中的例子(上厕所)。异步:同时去做两件或者多件事。比如边听歌边看报。原子操作(atomic)、加锁(NSLock、NSRecursive、NSConditionLock)、***@synchronizedGCD串行队列,GCD当中的屏障,NSOperationQueue设置最大并发数为1参考()iOS类是否能够多继承?如果没有,那能够用其它方法实现吗?简述实现过程。
不能够,能够通过消息转发、delegate和protocol和类别来实现类似多继承。iOS本地数据存储都有哪几种方式?iOS如何实现复杂对象的存储? NSKeyedArchiver(归档)采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。NSUserDefaults:用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据依然存在。NSUserDefaults能够存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSA
2020年度iOS工程师面试题模板 来自淘豆网m.daumloan.com转载请标明出处.