OC 协议&&分类

来源:互联网 发布:ubuntu系统分区教程 编辑:程序博客网 时间:2024/05/07 16:19

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中没有友元

0 0
原创粉丝点击