1.OC对比C语言多了什么数据类型?"主要是block和 BOOL类型 布尔类型
2.#include与#import的异同点是什么?"都是预处理指令,把文件的内容拷贝当前到这行代码所在的位置,只是#include不会防止文件重复包含,可以+indefan 和宏定义防止
2.OC是一门什么样的语言?面向对象与面象过程的区别是什么?"面向对象的语言,面向过程主要是考虑每一步该如何实现,而面向对象是把功能封装到对象中,完成一个事情,需要多少个对象来做.
3.什么是类,什么是对象?"类是具有相同行为功能的抽象集合 对象就是类的实例化
4.一个类主要有哪些部分组成?"声明和实现
5.一个类可不可以没有声名?可不可以没有实现?"可以没有声明,都是如果声明了就一定要实现,如果只有实现,是可以的,但是不建议这么做.
6.类的属性又称为什么?可不可以在定义时赋值?定义时默认是多少?"实例变量成员变量,不可以在定义时赋值 默认基本数据类型0,其他是null
7.方法有哪两种?有什么区别?"对象方法和类方法,对象方法由对象调用,类方法由类名调用,类方法不能访问成员属性.
8.方法与函数有什么区别?"方法属于类所有 函数属于整个文件的 定义的位置不同 写法不同
9.用什么表示对象?什么叫匿名对象?"类名 * (对象指针) 一个对象被创建了之后,没有强指针指向它 (一个对象指针表示对象) 对象被new 出来之后没有被引用
10.内存主要分为哪几个区?对象在哪个区?"对象在堆区 代码区 堆区 栈区 BSS段(静态区) 数据区
11.属性的作用域由什么控制?分别是什么?"由变量的权限来控制,分别是@public @protected @private @package作用域介于私有和公开之间,只要处于同一个框架中就可以直接通 过变量名访问子类 本类外面
12.面向对象的三大特性是什么?"封装 继承 多态
13.什么是继承?继承必须满足什么条件?"一个类拥有另一个的所有属性和方法 2.子类是父类
14.什么是组合(关联)?什么是依赖?"对象做为另一个类的的属性 2,作为方法参数
15.OC是的方法可不可重写?可不可以重载?(方法名相同,参数不同称为重载)"可以重写, 但是不能重载:重载:方法名相同参数不同
16.属性能不能重写?"属性不能重写,子类不能重写父类的属性
17.self与super的作用及区别?"self可以调用属性和方法(在对象和类方法中又有区别),super是在子类重写父类的方法时,需要用到父类的方法.super只适用于方法
18.什么是多态?多态的有什么作用?"某一事物的多种形态.父类的指针指向子类的对象 好处:扩展性很强 例子:打球,可以是打各种类型的球
19.多态要满足什么条件?"继承关系 父类的指针指向子类的对象
20.多态中父类能直接访问子类独有方法及属性吗?"不能,需要强转 父类也不能访问属性,也要强转
21.id指针是什么?有什么作用?"万能指针,可以代表任意对象 可以不需要强转 动态调用
22.id指针能使用点语法吗?能用调用子类独有方法吗?"不能使用点语法 要使用就强转 可以调用独有方法
23.类的本质上是什么?类的方法与属性内存的同一片区域吗?"类的本质是个class对象 属性在对象中, 方法在类中
24.OC中封装主要指的是什么?"对属性的封装,不能让外部访问 隔离变化 重用 安全性 使用方便
25.点语法的本质是什么?用点语法访问与赋值底层做了什么操作?"本质是方法调用 自动展开为标准形式的set get方法 ,直接.就不用写set个get方法 Xcode的特性
26.@property有什么作用?"帮我们自动生成标准set get
27.什么时候@property不起作用?"手动标准写了set get 实现 就不起作用
28.动态类型与静态类型的区别?举例说明?"动态就是编译时不知道 运行时的知道类型 ID 静态:编译时就知道
29.构造方法有什么作用?"创建对象自带属性 初始化时自带值
30.重写构造方法的好处是什么?缺点呢?"可以在初始化时 就有值, 缺点init 没有参数 写死 了
31.为什么要自定义构造方法?要注意哪些问题?"因为重写不能灵活赋值 必须init开头后面第一个字母大写
32.OC内存管理的目的是什么?什么叫内存泄露?"防止内存泄露, 就是一个数据在内存中可以使用 但是没有被销毁就是
33.OC内存管理分为哪两种?"MRC ARC自动
34.MRC内存管理的目的及原则是什么?"引用计数器保持准确 谁retain谁release 谁创建谁retain..
35.ARC内存管理的机制是什么?"自动计数器"
36.内存管理的方法有哪些?这些方法能不能在ARC里使用?"ratain release autorelease 不能在ARC下使用,MRC调用super dealloc 方法 而ARC不能调用dealloc方法
37.对象在释放时调用哪个方法?MAC与ARC下重写这个方法要注意什么问题?"dalloc 方法 MRC调用super dealloc 方法 而ARC不能调用dealloc方法
38.什么叫僵尸对象?"一个对象已经释放了,但是还存在内存中没有被销毁 (一个对象它一旦被销毁后,对象就是僵尸对象)
39.什么叫野指针?什么叫空指针?"野指针指向僵尸对象.这个指针没有赋值是个随机值, 空指针:值为0,指向nil
40.什么叫强指针?什么叫弱指针?分别用什么表示?"当前这个指针指向对象 这个对象呗销毁的时候仍然指向那片内 存区域里面存的值不会被改变 称为野指针 //弱指针: 对象被销毁后,指针不再指向那片内存区域,成为空指针nil strong weak
42.@property的参数是要有哪几类?分别是什么?有什么作用?"@property的参数:
"1.跟内存管理相关:
retain:表示自动生成set方法的内存管理,表示会自动release旧值,retain新值.只用于OC对象
assign:不生成自动内存管理,非OC对象.(默认)
copy:表示自动生成set方法的内存管理,表示会自动release旧值,copy新值.
"2. 跟权限相关:
readonly:只读,不自动生成set方法,只生成get方法.
readwrite:可读可写,自动生成set和get方法.(默认)
"3 . 跟多线程相关:
nonatomic:不同步,性能更高,—推荐.
atomic:同步.性能更低 (默认)
"4 . 跟get与set方法命名相关:
get=方法名 表示生成你自定义的get方法名,不再是原有的以属性名命名的方法.
setter=set方法名:表示生成你自定义的set方法名.
注意这个一般不设置. BOOL型除外.
|