一个区分度很大的面试题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个区分度很大的面试题

一个区分度很大的面试题考察一个面试者基础咋样,基本上问一个 @property 就够了:@property 后面可以有哪些修饰符?线程安全的:atomic,nonatomic访问权限的readonly,readwrite内存管理(ARC)assign,strong,weak,copy内存管理(MRC)assign,retain,copy指定方法名称setter=getter=什么情况使用 weak 关键字,相比 assign 有什么不同?比如:在ARC中,出现循环引用的时候,必须要有一端使用weak,比如:自定义View的代理属性已经自身已经对它进行一次强应用,没有必要在强引用一次,此时也会使用weak,自定义View的子控件属性一般也使用weak;但b是也可以使用strongweak当对象销毁的时候,指针会被自动设置为nil,而assign不会* assigin 可以用非OC对象,而weak必须用于OC对象怎么用 copy 关键字?对于字符串和block的属性一般使用copy字符串使用copy是为了外部把字符串内容改了,影响该属性block使用copy是在MRC遗留下来的,在MRC中,方法内部的block是在在栈区的,使用copy可以把它放到堆区.在ACR中对于block使用copy还是strong效果是一样的这个写法会出什么问题: @property (copy) NSMutableArray *array;添加,删除,修改数组内的元素的时候,程序会因为找不到对于的方法而崩溃.因为copy就是复制一个不可变NSArray的对象如何让自己的类用 copy 修饰符?你是说让我的类也支持copy的功能吗?如果面试官说是:遵守NSCopying协议实现 - (id)copyWithZone:(NSZone *)zone; 方法如果面试官说否,是属性中如何使用copy在使用字符串和block的时候一般都使用copy如何重写带 copy 关键字的 setter?重写copy的setter方法时候,一定要调用一下传入的对象的copy方法,然后在赋值给该setter的方法对应的成员变量这一套问题区分度比较大,如果上面的问题都能回答正确,可以延伸问更深入点的:@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的在普通的OC对象中,@property就是编译其自动帮我们生成一个私有的成员变量和setter与getter方法的声明和实现我为了搞清属性是怎么实现的,曾经反编译过相关的代码,他大致生成了五个个东西OBJC_IVAR_$类名$属性名称 该属性的偏移量setter与getter方法对应的实现函数ivar_list 就是成员变量列表method_list 方法列表prop_list 属性列表也就是说我们每次在增加一个属性,系统都会在ivar_list中添加一个成员变量的描述,在method_list中增加setter与getter方法的描述,在属性列表中增加一个属性的属性的描述,然后计算该属性在对象中的偏移量,然后伸出setter与getter方法对应的实现,在setter方法方法中从偏移量的位置开始赋值,在getter方法中从偏移量开始取值,为了能够读取正确字节数,系统对象偏移量的指针类型进行了类型强转.@protocol 和 category 中如何使用 @property在protocol中使用property只会生成setter和getter方法声明,我们使用属性的目的,是希望遵守我协议的对象的实现该属性category 使用 @property 也是只会生成setter和getter方法的声明,如果我们真的需要给category增加属性的实现,需要借助于运行时的两个函数objc_setAssociatedObjectobjc_getAssociatedObjectruntime 如何实现 weak 属性runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象地址作为 key,当此对象的引用计数为0的时候会 dealloc, 进而在这个 weak 表中找到此对象地址为键的所有 weak 对象,从而设置为 nil每个人擅长的领域不一样,我们一般会从简历上找自己写擅长的技术聊,假如自己并不是很熟,最好别写出来或扯出来,万一面试官刚好非常精通这里就露馅了。Checklist总结过些面试题,没坚持下去,后来把这些当 checklist,面试的时候实在没话聊的时候做个提醒,语言、框架、运行机制性质的:[※]@property中有哪些属性关键字?同上[※]weak属性需要在dealloc中置nil么?不需要,在ARC环境无论是强指针还是

文档评论(0)

cunzhu74 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档