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>、防止循环引用,以至于对象无法得到正确的释放。