就业面试题讲解.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
就业面试题讲解

简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak属性的作用?并区别strong(强引用)、 weak(弱引用)?什么情况使用copy,assign,和retain? 管理机制:使用了一种叫做引用计数的机制来管理内存中的对象。OC中每个对象都对应着他们自己的引用计数,引用计数可以理解为一个整数计数器,当使用alloc方法创建对象的时候,持有计数会自动设置为1。当你向一个对象发送retain消息 时,持有计数数值会增加1。相反,当你像一个对象发送release消息时,持有计数数值会减小1。当对象的持有计数变为0的时候,对象会释放自己所占用的内存。 retain(引用计数加1)-release(引用计数减1) alloc(申请内存空间)-dealloc(释放内存空间) readwrite: 表示既??getter,也有setter (默认) readonly: 表示只有getter,没有setter nonatomic:不考虑线程安全 atomic:线程操作安全 (默认) 线程安全情况下的setter和getter: - (NSString*) value { @synchronized(self) { return [[_value retain] autorelease]; }} (void) setValue:(NSString*)aValue { @synchronized(self) { [aValue retain]; [_value release]; _value = aValue; } } retain: release旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 assign: 简单赋值,不更改索引计数 (默认) copy: 其实是建立了一个相同的对象,地址不同(retain:指针拷贝 copy:内容拷贝) strong:(ARC下的)和(MRC)retain一样 (默认) weak:(ARC下的)和(MRC)assign一样, weak当指向的内存释放掉后自动nil化,防止野指针 unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。 autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。 类变量的@protected ,@private,@public,@package,声明各有什么含义? @private:作用范围只能在自身类 @protected:作用范围在自身类和继承自己的子类 (默认) @public:作用范围最大,可以在任何地方被访问。 @package:这个类型最常用于框架类的实例变量,同一包内能用,跨包就不能访问 线程是什么?进程是什么?二者有什么区别和联系? 一个程序至少有一个进程,一个进程至少有一个线程: 进程:一个程序的一次运行,在执行过程中拥有独立的内存单元,而多个线程共享一块内存 线程:线程是指进程内的一个执行单元。 联系:线程是进程的基本组成单位 区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。 举例说明:操作系统有多个软件在运行(QQ、office、音乐等),这些都是一个个进程,而每个进程里又有好多线程(比如QQ,你可以同时聊天,发送文件等) 谈谈你对多线程开发的理解?ios中有几种实现多线程的方法? 好处: 1.使用线程可以把占据时间长的 HYPERLINK /view/17674.htm \t _blank 程序中的 HYPERLINK /view/135914.htm \t _blank 任务放到 HYPERLINK /view/179243.htm \t _

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档