OC 协议&&分类

Objective-C 不支持多继承,但通过协议和分类来实现类似功能。协议包含只定义不实现的方法,分为正式协议和非正式协议,遵循协议的类需实现@required方法。分类则用于为类添加方法,不能添加实例变量,一个类可以遵循多个协议,并可以通过分类重写方法。Objective-C 的 nil 调用不会导致程序崩溃,且提供了BOOL类型等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2016.9.5  OC  第七天 协议&&分类

OC没有多继承,为了完成多继承的效果,使用分类和协议

协议并不是一个真正的类,协议中只有方法,不能有实例变量

方法只有定义,没有实现。

协议:

正式协议:自定义,通过关键字@protocol创建的协议

两个关键字修饰方法:

@optional:其修饰的方法可实现,也可不实现   @required:必须要实现其修饰的方法

(如果没有关键字修饰,默认方法被@required所修饰)

非正式协议:分类、现在自定义的类


协议的声明:

@protocol  协议名称

协议可以遵循协议   @protocol   协议名称  <所要遵循协议的名称>

如果一个类遵循了协议,那么该类的子类也遵从了协议

协议不可以引用任何类,无类主义(Classless


@interface  Point<协议名称1>

一个类可以遵循多项协议     @protocol  <协议名称1,协议名称2,协议名称3>


当对一个对象进行拷贝时,在要拷贝的目标类中实现copyWitnZone方法即可实现拷贝,一般情况下会让类遵从NSCoping协议,用来实现其方法


分类:一个类的组成部分(把方法区分声明)

就是类的一部分

只能添加方法,不能添加实例变量,可以为自定义类创建分类,也可以位系统框架类添加分类


定义:@interface 原类名(分类名)

  @interface原类名(分类名)<协议名称>


一个类可以有很多分类,必须保证分类名称的唯一性

注意:1️⃣不允许创建分类与与继承某一个类同时出现

           2️⃣分类可以重写类中方法,不建议这样写

    3️⃣可以有多个分类


C++中的NULL:使用空指针调用函数,程序崩溃

OCnil  :使用空指针调用方法自动被忽略(程序没有崩溃)


BOOL类型;

C++true   false

OC:     YES   NO


SEL选择器 


C++:特性

1OC中没有引用&

2OC中没有内联

3OC中没有模板

4OC中没有const

5OC中没有操作符重载

6OC中没有友元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值