什么时候使用copy关键字?

在使用NSString、NSArray、NSDictionary时,经常用copy关键字。原因:这些类有对应的mutable子类,如果不用copy的话,有可能会在其它地方被修改,造成不可预知的后果;

什么时候使用weak关键字,和assign有什么不同?

在防止引用循环时,可以用weak来解决;

和assign的不同:(1)在对象释放掉后,weak的属性是nil,而assign的则是野指针;(2)weak只能用于OC对象,assign可以用于非OC对象;

如果用copy、atomic关键字修饰NSMutableArray,会有什么后果?

用copy,会导致array找不到对应的方法而崩溃;用atomic,可能会影响性能;

如何让自己的类用copy修饰符?

声明并实现NSCoping协议;

@protocol和category中如何使用@property;

@protocol中很少使用property,如果用到property,只会生成getter/setter,一般是想让实现这个protocol的object实现该property;

category中添加了property也只会生成getter/setter,无法添加实例变量;但可以通过objc_setAssociatedObject方法来实现;

@property后面可以有哪些修饰符?默认有哪些修饰符?

可以有的修饰符有几类:(1)读写权限相关的,比如readonly、readwrite等;(2)原子性相关的,atomic/nonatomic;(3)内存相关的,strong/weak/retain/assign/copy等;

默认的修饰符有:(对于object)strong或(对于基本数据类型)assign,和atomic,不过为了代码可读性,我一般都写上;

@synthesize和@dynamic有什么用?

@synthesize:如果没实现setter/getter,这个关键字会让编译器加上这2个方法;不过现在已经不需要了,因为只要写上@property就会“自动合成”;

@dynamic:告诉编译器,属性的setter/getter由用户自己生成,不需要自动实现;即动态绑定;

copy和mutableCopy的区别?

对于NSArray来讲,copy是指针复制,mutableCopy是(单层)内容复制;

对于NSMutableArray来讲,copy和mutableCopy都是内容复制;

objc中向一个nil对象发送消息将会发生什么?

不会有任何操作,也不会崩溃;从runtime来讲,会先检查这个对象是不是nil,如果是nil的话,就直接结束,不再进行其它操作了;返回值是nil(如果是object)或者0(基本数据类型);

objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?

是同一个操作;因为发送消息在编译的时候,就是编译成了objc_msgSend()函数;

什么时候会报unrecognized selector的异常?

如果向一个object发送了它没有的方法,而且对于后续不进行补救的话(method resolution/fast forwarding/normal forwarding),则会报这个错误;

下面的代码输出什么?

@implementation Son : Father- (id)init{self = [super init];if (self) {NSLog(@"%@", NSStringFromClass([self class]));NSLog(@"%@", NSStringFromClass([super class]));}return self;}@end

都是输出sin;原因:调用super方法其实还是先向Son方法发送,只是会用到objc_msgSendSuper();结果还是Son这个类先接收到消息,会先找本类中有没有这个方法,并返回;

objc_msgForward方法是干什么的?

用来做消息转发的;jsPatch用它来实现热更新;

autorelease对象在什么时候释放?

如果手动指定autoreleasepool,则在当前作用域结束时释放;

如果没有手动指定,则由系统自动去释放;更详细地,在runloop开始一次循环时创建pool,在当前runloop迭代结束时释放;

在block内如何修改block外部的变量?

block中不允许修改外部变量的值,因为作用域发生了变化;

加上__block关键字;__block关键字的作用:如果此变量被block持有,就将变量的值拷贝到堆中,并指向堆中,即改变了变量的作用域,使得在block内也可以操作变量了;

如何调试BAD_ACCESS错误?

打开enable zombie objects;或者用Address Sanitizer;

一些iOS面试题答案相关推荐

  1. 备战金三银四,2021最全100道高频iOS面试题分享上(含答案)

    原作者:执笔续春秋 iOS面试题 本面试题为个人使用版本,如后续流传出去,请转发的朋友务必注释一下,答案正确性有待商榷,本人的答案不代表权威,仅仅是个人理解. 文章内部有写混乱,将就着看吧.另外大部分 ...

  2. 最新iOS面试题:如何优化 App 的的包大小?(③系列更新)

    直接上建议: 资源优化 删除无用图片 使用 LSUnusedResources 查找无用图片.注意 [UIImage imageNamed:[NSString stringWithFormat:&qu ...

  3. 史上最全的iOS面试题及答案

    史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...

  4. 2019最新iOS面试题及答案

    1. Object-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-C的类不可以多重继承;可以实现多个接口,通过实现 ...

  5. 芒果iOS开发面试题答案

    面试题答案总结 1.简述OC中内存管理机制 1.1 OC的内存管理机制是自动引用计数,内存管理的原则是谁开辟谁释放,有retain的地方就要有release 1.2 内存管理分为ARC和MRC,在MR ...

  6. 2018最全的iOS面试题及答案

    最全的iOS面试题及答案 iOS面试小贴士 ---------------回答好下面的足够了------------------------------------- 多线程.特别是NSOperati ...

  7. iOS面试题集锦附答案及必需具备的知识

    面试看面试官水平和心情,我遇到一本正经的问题还有"安卓用三个按键,苹果为什么只有一个 home键?""你觉得你是个有爱的人吗?""你男朋友是在哪里做什 ...

  8. 超全!iOS 面试题汇总

    超全!iOS 面试题汇总 2015-10-20 CocoaChina 作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家. ...

  9. 原 iOS面试题收集

    原 iOS面试题收集 发表于2年前(2013-07-22 13:47)   阅读(369) | 评论(0) 4人收藏此文章, 我要收藏 赞0 听云性能监测产品App.Server.CDN免费试用,绑定 ...

  10. 经过阿里,百度一面,二面后,我总结了150道iOS面试题

    经过阿里,百度一面,二面后,我总结了150道iOS面试题. 金三银四已经过去,根据统计,很多人都会选择在三月四月跳槽,原因有很多,企业年后会有大量员工离职,员工觉得老公司待遇不怎么样?薪资不够高,想换 ...

最新文章

  1. 用户名字符串和密码字符串登录验证
  2. dynamic.rnn()sequence_len理解
  3. 内核模式下的注册表操作
  4. C#多线程学习6——互斥对象
  5. 爬虫学习笔记(八)—— Scrapy框架(三):CrawSpider模板
  6. mysql 将查询所得结果集的某一字段拼接成字符串
  7. 电子计算机的大脑核心是什么,戴君惕《人脑与电脑》初中说明文阅读题及答案...
  8. pe下找不到ssd硬盘_【进入pe系统后认不到硬盘解决方法】进入pe系统看不到硬盘_pe系统不认硬盘...
  9. redis源码剖析(十三)—— dump.rdb文件分析
  10. 文本查询TextQuery类文件编写
  11. Jquery调用WCF经验分享
  12. python趣味编程100例-Python趣味编程与精彩实例,码高少儿编程 编
  13. 64位userdata.dll丢失_因为计算机中丢失OCI.dll尝试重新安装该程序以解决此问题
  14. 【JAVA】java中CyclicBarrier的使用方法,实例解说
  15. 高通QFIL刷机指南
  16. MacOS下DockerCE的使用方式
  17. 谈古论津丨河北区,三条石大街
  18. 如何用python爬取下载微博视频_程序员徒手用python教你爬取新浪微博,一天可抓取 1300 万条数据...
  19. 精密测量专题2--光栅基片预处理
  20. Pomelo MMORPG

热门文章

  1. 魔术的逻辑(一)——魔术是怎么发生的?
  2. 根据题3.9图的公差要求填写题3.9表,并绘出动态公差带图【(σ゚∀゚)σ..:*☆哎哟不错哦】
  3. ASP + SQL Server聊天室设计实例
  4. CMD-NET命令详解
  5. 详细了解DAS、SAN和NAS三种存储方式
  6. VMware安装windows server 2008 R2
  7. python多线程求合数个数_求十亿内所有质数的和,怎么做最快?
  8. 三星显示屏测试软件,MagicTune(三星显示器调节工具)
  9. java实现筑业软件官网下载,筑业资料软件2020旗舰版|筑业资料软件免费官方下载-系统族...
  10. PostgreSQL update多张表关联查询更新