文章目录
1. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?
#import是Objective-C导入头文件的关键字,
#include是C/C++导入头文件的关键字,
使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;
@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含、循环引用问题;
#import<>用来包含系统的头文件,#import””用来包含用户头文件。
2. Category是什么?类别(category)的作用?
Category是类别,用Category重写类的方法,它仅仅只对本Category有效,并不会影响到其他类和原有类的关系。
- 创建私有方法的向前引用
- 分散类的实现
- 实现非正式协议
3. Object-c的类可以多重继承么?可以实现多个接口么?继承和类别在实现中有何区别
oc不可以有多继承,可以用Protocol委托代理实现多个接口
区别:
- 继承是“:”加父类名字,类别是声明类别名字和加到的类
- 和类中方法重名,类别中的方法有更高优先级,类本身的方法将没有作用
- 类别是对类的新增扩展不能修改一个类,继承不仅新增扩展能修改删除的类中的方法;
- 类别是对方法的扩展,继承可以派生出新的属性和新的成员变量
4. OC动态运行时语言是什么意思?
- 不同的对象可以接收相同的消息,可以去做不同的实现
- OC语言将数据类型的确定由编译时,推迟到了运行时
- 运行时的调用
<obj/runtime.h>
obj_sendMsg(id reciver, selector);
[obj method];
id声明的对象有什么特性
id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;
5. 方法和选择器有何不同?
- 方法是包括声明和实现两部分,
- 选择器是方法的名称
performselector:(SEL)