面试题 -- OC基础知识

一、 #import 跟#include 有什么区别,@class呢, #import<> 跟 #import””有什么区别?

#import是Objective-C导入头文件的关键字,
#include是C/C++导入头文件的关键字,
使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;
@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含、循环引用问题;
#import<>用来包含系统的头文件,#import””用来包含用户头文件。
 

二、Category是什么?类别(category)的作用?

Category是类别,用Category重写类的方法,它仅仅只对本Category有效,并不会影响到其他类和原有类的关系。

  1. 创建私有方法的向前引用
  2. 分散类的实现
  3. 实现非正式协议

三、 Object-c的类可以多重继承么?可以实现多个接口么?继承和类别在实现中有何区别

oc不可以有多继承,可以用Protocol委托代理实现多个接口

区别:

  1. 继承是“:”加父类名字,类别是声明类别名字和加到的类
  2. 和类中方法重名,类别中的方法有更高优先级,类本身的方法将没有作用
  3. 类别是对类的新增扩展不能修改一个类,继承不仅新增扩展能修改删除的类中的方法;
  4. 类别是对方法的扩展,继承可以派生出新的属性和新的成员变量
     

四、 OC动态运行时语言是什么意思?

  1. 不同的对象可以接收相同的消息,可以去做不同的实现
  2. OC语言将数据类型的确定由编译时,推迟到了运行时
  3. 运行时的调用
<obj/runtime.h>
obj_sendMsg(id reciver, selector);
[obj method];

id声明的对象有什么特性

id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;

五、 方法和选择器有何不同?

  1. 方法是包括声明和实现两部分,
  2. 选择器是方法的名称
    performselector:(SEL)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值