您的位置:首页 > 其它

OC中继承代理委托类别

2015-08-09 20:31 190 查看
1,类别的意义

// 类别:类的扩展,能够向已有的类中添加新的方法(“属性”)

// 并且添加的代码不用写在已有的类中

// 但是,添加的方法属于这个已有的类。

//一个类别要知道是谁的类别,所以要在类别的.h文件当中导入扩展类的头文件

//一般情况下这个头文件由系统自动添加。

//类别定义格式:

//@interface 扩展类名(类别名)

//一般情况下,也由系统自动创建

//在类别中声明的方法必须实现,如果不想实现那就不要声明

//当然,不实现也不会抱错,但是会有隐患.

ps

// 关于类别中添加属性的特别说明:

// 类别中本质上是不允许添加属性的,因为类别中

// 不允许添加@synthesize。所以,添加的属性没有办法访问到

// 如果强制调用就会有很多❌错误

// 凡事都有例外;在IOS开发过程阶段,类别会和类

// 写在同一个文件当中,这个时候就能够使用类别

// 添加的属性了。。。。

不光能给自己创建的类添加类别,还能给系统的类添加

添加类别实际上就是添加方法二不去动原来的类。

2,类别的作用

类别能够在不动相应的类的前提下给类增加方法。

3,匿名类别

//在匿名类别(延展)中声明方法必须在对应类实现这个方法

//匿名类别不能对看不到.m文件的类扩展。

//匿名类别和类别在使用的时候有什么区别

//匿名类别(延展)在导入头文件的时候必须写在.m中

//原因:没有原因。

4,协议

#import <Foundation/Foundation.h>

@protocol Biaobai <NSObject>

//协议中写的是方法的声明,实现协议就是实现了协议中声明的方法。

@optional

-(void)biaobai;

//协议中声明的方法没有特殊情况的话可以不用都实现。

-(void)huashibiaobai;

//@optional可选实现或不实现的

//@required必须实现的

@end

//一个类去拜托另一个类的对象去做这个类不会做的方法

//寻找代理,委托模式---代理委托。

@interface Baye : NSObject

//id<Biaobai>delegate

//这个id类型的对象,表示这个对象实现了表白协议中声明的方法

//delegate这个对象遵守了这个Biaobao协议

//ps:拜托delegate替你做某事的时候要先确认delegate会做这件事

@property(retain,nonatomic)id<Biaobai> delegate;

-(void)baituobiaobai;

@end

#import <Foundation/Foundation.h>

#import "Biaobai.h"

//当一个类实现了某个[协议]的时候,用<>写在类声明的后面

//被拜托的人(也就是作为delegate的那个人)得真的会做这件事

@interface Siye : NSObject<Biaobai>

@end

//pss:基本上,在OC当中,就目前我们所学的知识里,能用到id类型的也就是代理和委托,别的地方别乱用。

看到id和delegate就得想到代理,委托

id类型表示泛型,它其中什么属性和方法都没有,所以用id类型的任何方法都会有警报说找不到这个方法。

类别:对类进行外部扩展,能够提供如下便捷操

作:在任何想要使用扩展的方法的地方,

只要导入类别头文件,即可使用,因为类别中扩展的方法,都在类别

内部实现了。

匿名类别:对类进行内部扩展,(本质上是为了弥补OC中没有私有

这一概念而产生的)

匿名类别中声明的属性,方法,都是私有的,不要在外部使

用,匿名类别的头文件导入在.m当中。

ps:成员变量,属性,方法(直接调用成员变量,self。调用

属性 _ 调用成员变量)

协议:声明某个类拥有某个方法。ps:协议的出现弥补了id类型[不能

找到某个方法的警报问题]pss:协议中不要声明属性(特除)

委托:人话:拜托[拥有某个方法的[对象]做[某个方法]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: