【7A版】面试题分.docx

【7A版】面试题分.docx

ID:32704725

大小:33.04 KB

页数:13页

时间:2019-02-14

【7A版】面试题分.docx_第1页
【7A版】面试题分.docx_第2页
【7A版】面试题分.docx_第3页
【7A版】面试题分.docx_第4页
【7A版】面试题分.docx_第5页
资源描述:

《【7A版】面试题分.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、7A版优质实用文档一.内存管理1.属性-属性关键字MRC—>retaincopyassignnonatomicARC—>strongcopyweaknonatomic含义—>strong,retain,引用计数加一(对一块内存空间的强引用);copy有的说法是另外开一个空间,内容复制,原来的空间引用计数不变,但是,实际的测试和retainstrong一样;assign,weak用于代理模式(对一块内存空间的若引用--只是指向而已,不加一)或者是基本数据类型,如CGFloatNSUInteger等nonat

2、omic多线程访问不加锁,提高效率,通常的属性都用在主线程里面,所以,nonatomic经常使用对OC对象而言,尽量使用属性,而不是成员变量,基本数据类型,有需要可以使用属性,否则成员变量即可,当然也成属性也没任何关系2.release-->对象什么时候被release此处的release应该指广义上的,即对象什么时候释放,当一个对象的引用计数为零的时候,就被释放了,比如MRC的时候,自己手动release一下,计数减1,手动autorelease对象或者类方法创建的对象会进入到最近的自动释放池,当释放池

3、释放的时候,里面的对象引用计数减1,当计数为零的时候释放3.delegate为什么是若引用weakassign为了防止所有权循环,比如一个自定义的view的代理指针指向一个controller的时候,如果是强引用如retain,strong的话,此时controller的引用计数至少为2,航控制器保存一份,计数为1,自定义视图再保存一份,计数为2,当pop这个controller137A版优质实用文档7A版优质实用文档的时候,导航使controller的计数减1,但是,还为1,所以,controller不

4、释放,view也不会释放,内存泄漏4.releaseandautoreleaserelease使一个对象的引用计数马上减1,autorelease是延迟释放一个对象,行为是把这个对象放入到离它最近的自动释放池,当这个释放池被释放的时候,里面的所有对象引用计数减1,进入到自动释放池的情形如下1.-(NSArrayG)getArr{NSArrayGarray=[[NSArrayalloc]init];[arrayautorelease];}2.self.m_arrData=[[[NSMutableArraya

5、lloc]initWithCapacity:0]autorelease];3.NSMutableArrayGarr=[NSMutableArrayarray];5.点语法属性点语法或者叫属性,实际上使ios提供的getter方法和setting方法的简写形式,本质是方法@property(nonatomic,retain)NSStringGname;-(NSStringG)getName{return_name;137A版优质实用文档7A版优质实用文档}NSStringGmyName=self.name;

6、-(void)setName:(NSStringG)newName{[newNameretain];[_namerelease];_name=newName;}self.name=@"aaa";跟引用计数相关的才如上面的setter方法,否则应该是这样的,getter方法不变,setter变化@property(nonatomic,assign)NSIntegerage;-(NSInteger)getAge{return_age;}-(void)setAge:(NSInteger)newAge{_age=

7、newAge;}6.自动释放池工作过程及说明在什么情况下需要Autoreleasepool使用autoreleasepool的情形137A版优质实用文档7A版优质实用文档每一个事件循环都会产生一个自动释放池,比如button的点击事件,当这个释放池,释放的时候,里面对象的引用计数减1;自动释放池是可以嵌套的,当自动释放池释放了,里面的所有对象引用计数都减1-(void)poolLoop{NSAutoreleasePoolGoutPool=[[NSAutoreleasePoolalloc]init];//对

8、象1,2,3是outPool里面的对象//对象1//对象2//对象3NSAutoreleasePoolGmiddlePool=[[NSAutoreleasePoolalloc]init];//对象4,5,6是outPool里面的对象//对象4//对象5//对象6[middlePooldrain];[outPooldrain];}//当outPool释放的时候,对象1,2,3引用计数减1,middlePool也会被释放,这样对象

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。