面试题目-ios各种理论知识_第1页
面试题目-ios各种理论知识_第2页
免费预览已结束,剩余4页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Objective-COCOC内存管理是基于计数。谁想使用某个对象B,就要把对象B的计数器+1,如果不使用这个对象了,那么就把对象B计数器-1,如果B对象计数器减到0,那么B对象自动会调用自己的dealloc函数,也就是这个对象被销毁。allocrelease系统有一个自动释放池,对于一些对象我们可以放在自动释放池中。如果自动释放release.assign,retain,copy,autorelease,release,dealloc的不同assign就是基本的赋值,就是C的基本的赋值retain就是让对象计数+1,表示拥有了这个对象copy把对象一份。copy是深拷贝,浅拷贝auorelease把对象放在自动释放池里面release表示对象计数器-10selfname=“yang”name=“yang”的关系setter调用一个函数name=”year”表示给字段field赋值什么是深拷贝和浅拷贝深拷贝是把对象以及对象的对象递归拷贝。注意强调mutableCopy不是深拷贝如果要对自己对象BookModel实现拷贝那么必须实现NSCopying协议实现里面的-(id)copyWithZone:(NSZonecopymutableCopymutableCopy可变拷NSString→→mutableCopy-→→NSMutableStringNSArray--→→mutableCopy-→→NSMutableArray;NSMutableString-→→copy---#import和#include#import对于包含多个相同文件只是包含一次#include需要加上 OC有没有GC/GabbageCollector回/OCGCMacOCGCKVCKVC就是keyvaluecoding.主要用来大量的对象赋值上。比如网络json数据进行解bookM=[dictobjectForKey:@”name”];bookModel.author=[dictobjectForKey:@”author”];kvcNSArray*arr=[NSArrayarrayWithObjects:@”name”,@”author”,nil];for(NSString*fieldinarr){NSString*v=[dictobjectForKeyfield];bookModelsetValue:vforKey:field];}kvc2个方法setValue:forKey:valueForKey:settergetterKVO主要用在属性的上。KVO比如用在的时候知道当前的进度协议和的关系和区别协议就是规范接口(让每个对象都有相同的函数),主要是用来在多个对方中数据传输的统一接口。类似于java中得接口。OC协议的所有方法不一定要全部实现。@optional,当时java中得接口全部需要实现。是一种设计模式。在iOSOCNSArray,NSDictionaryNSArray使用链表实现,NSDictionaryhash单例在多线程重要注意什么?需要加锁OC+(id){staticid_s;@synchronized(self){if(_s==nil)_s=[[[selfclass]alloc]}return}反向就是。用单例,用blocks,用数据库,通知中NSNotification原理是啥原理就是接收端把接受函数到一个数组中,发送端发送数据就直接调用之前存得函数NSNotification 是同步还是异是同步的.NSNotificationQueueAnotificationcenterdeliversnotificationstoobserverssynchronously.Inotherwords,thepostNotification:methodsdonotreturnuntilallobservershavereceivedandprocessedthenotification.TosendnotificationsasynchronouslyuseNSNotificationQueue.Inamultithreadedapplication,notificationsarealwaysdeliveredinthethreadinwhichnotificationwasposted,whichmaynotbethesamethreadinwhichanobserverregisteredHopeithelpsCategory ScrollView复用TableView才有iOS5,iOS6,iOS7适if(isIOS7)//让iOS7导航控制器不透明self.navigationController.navigationBar.translucentNO;self.edgesForExtendedLayout=UIRectEdgeNone;//可以认为上面2让它恢复成iOS6}5高度适配,要动态的获取高UI 比如解析一个大文件,比如一个地区详情文件,解析时间比如是10s,那么不用线程的话,界面就会假死/卡10s,用户体验差,那么解决方法就是很快把界面暂时,启动线程去解析。再比如,做滤镜。图像操作会耗费很多时间,比如5s,那么界面会假死5s,那么用户体验差,解决方法是启动线程在使用滤镜算法处理图像,一旦处理完就通知主线程刷新界面.在比如:网络数据,由于网络状态好坏时间会不确定,那么我们需要使用线程来处理这种不确定的关系,一定数据接收完成,那么就可以通知主线程处理。再比如数据数据库,时间很长,那么就需要通过线程来做特别强调的是,线程不是快。是为了给用户一个快得假象线程池就是一堆项目的集合,就是一个线程队列来管理这些线程对象。如果需要处理一些任务,可以从线程池中直接取线程,而不是临时创建线程。比如NSOperationQueue就是一个线程池,管理NSOperation线程对象线程锁是多个线程要同一个资源引入的一种机制。比如2个线程同时写数据文件,那么需要用锁NSLock来保证同一个时刻只能有一个线程写。写结束后另外一个线程才能接着写。比如创建单例的时候,为了保证哪怕多个线程同时创建单例,也只能创建一个单例对象。一般使用Lazy懒加载和缓存的模式。懒加载就是需要的时候才去临时记载。主要是节省内存空间和用户流量。缓存就是把url地址做成md5存在沙盒中以便下次直接使ASI的原理是啥ASIAppleCFNetworkBSDSocket实现的。他是一个基于NSOperation的线程处理网络框架。CFNetwork是基于InputStream/Outstream流的方式管理数据。它了多线程异步模式进行数据的通讯。比如数据的上传进度,进度,缓存的管理机制。大文件,大文件上传,安全机制等。SDWebImage原理是什么 是一个基于 的一个多线程缓存框原理是每次通过[uiimageviewetImageithUrl:]就启动一个异步线程,负责网络,一旦完成就把使用md5做一个校验checksum,然后存在一个沙盒andbox管理中,以便下次可以直接从sandbox中,而不需要从网络上,目的是为了节省用户流HTTP原理是HTTP是基于TC/IP的一个网络连接协议,它是客户端和服务器通讯的常用方式。他是使用请求,响应模型,客户端请求,服务端响应的方式。HTTP协议有请求头,请求体,响应头,响应体。XML/Json是一般作为响应的数据格式传输。GET/POST是和请求的2中常见方式。还有2中PU,DELETETCP/IP的原理是TCP/IPTCP是稳定,可靠的点对点传输,UDP是不可靠的,高速的网络传输协议。在客户单中,一般用在聊天类IM(InstanceMessage),或者流,语音等大数据中。TCP可以和服务器保持长连接。一SocketTCP/IPAsyncSocket,BSDSocket。或者CFNetwork都可以HTTP断点原在 协议头上加上 Socket原理是什么AsyncSocketiOSTCP/IP通讯的开源的套接字框架BSDSocket好用一些。AsyncSocket使用了CFNetwork中异步回调模型。所有的收发数据都是使用来通知。CFNetworkStreamTCP/UDP,UDP广播,组播,比如XMPP里面就用了AsyncSocket来进行底层通讯。类似于Token,主要是为了让服务端能够识别当前用户。在上一般使用token模式。在浏览器上比较喜欢,iOSNSUrlConnectionASI都支持,就MVCModel,View,ControllerModelView界面之间耦合度的问题(保证低耦合。保证数据模型和刷新界面相对独立。Controller就是在中间把Model和View耦合在一起。因为大型软件要求Model尽量和界面进行独立一些。比如很多界面有列表模式,地图模式。界面有2分,当时数据模型就一份。比如:iOS常见的开发大多基于MVC模型,比如Controller去启动网络,数据处理,然后解析数据,然后建立数据模型,然后把数据模型关联到TableViewCell上。这种就是MVCweibo/OAuth原理是什Weibo使用了OAuth网络协议。目前使用OAuth2.0协议。他是基于HTTP的一个网络认证协议,通过AppKey等调用weibo的页面,然后用户输入账号,weibo服务器返回成功后的token。,支付宝,银联都是在真机上使用。我们在程序中调用,支付宝,银联等程序,然后给他们传入相应地参数接口,这个就是2个程序之间项目的传输数据。是通过URL进行识别的。具体他们协议都没有公开,所以我们需要他们自己的SDK进行开发。XMPP原理XMPP是基于Socket套接字的一个专门聊天IM的协议。他支持,登陆,以及单聊,群组聊天功能。对,语音,文件支持不好,一般使用HTTP来进行转发一下。或者做一个base64编码。XMPP是一个即时聊天框架,支持和talkmsn早期的qq进行通讯。他内部支持重连机制(断线后自动重连)。心跳机制。CoreData进行数据的管CoreData是什么CoreDat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论