iOS基础笔试题-(2)

12. obj在编译时和运行时分别时什么类型的对象

以下面的代码,obj在编译时和运行时分别时什么类型的对象:ios

参考答案:面试

在编译时,咱们所声明的objNSString *类型,所以是NSString类型对象。在运行时,因为指针obj所指向的是NSData类型对象的内存,所以其实是NSData类型的对象。在编译时,这一行代码会转换成相似这样:设计模式

因为在编译时,转换成id,所以能够用NSString *指向NSData对象,而id是具有运行时特性的,所以在连接时,经过idisa指针能够找到其所属的类,所以最终类型仍是经过isa肯定其所属类型。api

13. id声明的对象有什么特性?

id类型能够指向任何类型的对象。数组

参考答案:安全

咱们先看看其定义:性能

可其定义可知id类型是一个指向objc_object结构体类型的指针,这个结构体只有一个指向对象无类的指针isa,所以id能够指向任何类型的对象,故其具有运行时特性。测试

 

14. iOS设备性能测试

在实际开发中,咱们常常须要对应用瘦身,所以对性能的检测是很重要的。spa

参考答案:线程

使用Profile-> Instruments ->Time Profiler能够检测性能。

15. Objective-C中有私有方法、私有变量么?

我记得曾经我就被这么问过,不知道你们有没有遇到过。

参考答案:

在类的.m实现文件内声明,就能够做为私有方法、私有变量。可是,并非绝对的私有,若是外部知道有这么个方法,同样能够调用,并且不会报错。就像苹果公司没有公开出来的API,只要咱们经过其它方式了解到api就能够调用。因而苹果审核时常常因为使用了私有api而打回来了。

 

16. 简述tableview的重用机制

曾经笔者面试时,也被问到这个问题。

参考答案:

 

  • 这个方法就是重用机制的核心了。好比,有一个界面可显示10个cell,那么建立10次cell,并给cell指定一样的重用标识(固然,能够为不一样显示类型的cell指定不一样的标识)而且10个cell将所有都加入到visiableCells数组,reusableTableCells为空.
  • 滚动tableView,当有一个cell彻底移出屏幕时,这个cell就会被加入到reusableTableCells。而新出现的那个cell将加入到visiableCells,而这个cell就是被重用的。

若是要让tableview不重用,不设置reuseIdentifier就能够了。

 

17. nil与NULL的区别

参考答案:

nilC语言的NULL相同,在objc/objc.h中定义。nil表示Objective-C对象的值为空。在C语言中,指针的空值用NULL表示。在Objective-C中,nil对象调用任何方法表示什么也不执行,也不会崩溃。

更详细请阅读笔者的文章:http://www.henishuo.com/nil-nil-null-nsnull-difference/

18. Category是什么,什么时候使用?

参考答案:

Category就是所谓的扩展。

有时咱们须要在一个已经定义好的类中增长一些方法,而不想去重写该类,这时候使用扩展就很好。好比,当工程已经很大,代码量比较多,或者类中已经有不少方法,已经有其余代码调用了该类建立对象并使用该类的方法时,可使用类别对该类扩充新的方法。

笔者所到公司之处,都会根据公司的UI风格定制一套UI组件,统一全局的风格。本人向来不喜欢用xib/storyboard开发,由于维护成本过高了。咱们不能经过继承的方式定制各类组件吧?因此这个时候使用扩展是最佳时期。

19. 什么是Delegate?经常使用场景?

参考答案:

Delegate就是所谓的代理,代理是一种设计模式。在iOS开发中,会使用到大量的代理,而代理设计模式是苹果中的标准设置模式。

经常使用场景有反向传值。好比:苹果的蓝牙,咱们进入到下一个界面去打开或者关闭蓝牙,当操做以后须要将状态反馈到前一个界面,并更新显示。对于这种状态,使用代理设计模式是很标准的模式。

20. 什么是单例,如何设计单例?

参考答案:

单例就是全局都只有一个对象存在,并且是在整个App运行过程当中都存在。每一个App都会有单例,好比UIApplication。而咱们在作用户数据存储时,一般都会用单例存储,由于应用在全部操做中,常常要求先登陆。

下面这种写法是最经常使用的写法,这个是线程安全的。

 

21. 什么是通知?

参考答案:

iOS中,通知是很是经常使用的设计模式。它是多对多的关系。关于通知,因为这一节比较重要,单独写成一篇文章,在个人随笔中有详细的解释,感兴趣的能够前去看一看。

写在最后

文章中不免有说得不合理的地方,若是您认为说法不正确或者哪里有错误的地方,请在评论中留言,笔者会在第一时间修正!!!

相关文章
相关标签/搜索