iOS 面试题集-08

1、do while 语句和while语句的区别,并写出几个死循环:

1>、do while 语句至少执行一次循环,而while语句括号中表达式为真,才执行循环体。
2>、while (1) {}、for (;;)

2、switch 语句if语句区别与联系以及它的优势在哪里?

1>均表示条件判断,switch语句表达式只能处理是整型、字符串和枚举类型,而选择流程语句则没有这样的限制。但switch语句比选择流程控制语句效率更高。

3、协议的基本概念和协议中方法默认类型:

1>、oc中的协议是一个方法列表,且多少有点相关。它的特点是可以被任何(实现),但它并是类,自身不会实现这样方法,而是其他人来实现。协议经常用来实现委托对象(委托设计模式)。在协议中的方法有些是必须实现(@required修饰),有些可实现可不实现(@optional修饰)。

4、@public、@protect、@private它们的含义与作用:

1>、@public:对象的实例变量的作用域在任意地方都可以被访问。
2>、@protected:对象的实例变量作用域在本类和子类都可以被访问。
3>、@private:实例变量的作用域只能在本类后子类都可以被访问。

5、通过指针运算符(->)能够访问到private方法吗?OC语言中还提供哪些方法能直接或间接访问的访问实例变量?

1>、通过指针运算符是不可以访问private方法,可以通过合成存取器访问实例变量,也可以自定义setter和getter方法访问实例变量。KVC—键值编码,间接方式访问实例变量。

6、什么是retaincount:

1>、每一个对象都默认有一个retaincount的属性,数值的多少表示有几个实例正在引用它。它为0时,系统会自动调用dealloc方法,将内存回收。

7、解释 self = [super init]方法:

1>、容错处理,当父类初始化失败,会返回一个nil,表示初始化失败。由于继承的关系,子类是需要拥有父类的实例和行为的,因此,我们必须先初始化父类,然后在初始化子类。

8、当我们释放对象时,为什么需要调用[super dealloc]方法?

1>、子类是继承父类,那么子类中有一些实例变量(对象),是继承父类的,因此,我们需要调用父类方法,将父类所拥有的实例进行释放。
2>、先将子类所拥有的实例进行释放,然后再释放父类的。

9、object-c 有私有方法吗?私有变量呢?

1>私有方法是有的称:延展。私有变量也是有的(@private)。

10、为什么delegate(代理)属性都是assign而不是retain的?

1>、防止循环引用,以至于对象无法得到正确的释放。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,650评论 1 114
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,553评论 0 6
  • title: Browser-Sync Browsersync能让浏览器实时、快速响应您的文件更改(html、js...
    小东十七阅读 2,301评论 1 2
  • 最近加了几个写手群,一直跃跃欲试,想要接点私活,慢慢走上靠文字发财致富之路。 接的第一篇稿子是辽宁某热力国企公司,...
    馒头老师的百宝袋阅读 266评论 0 1