OC之类目、延展、协议、代理(笔记…

OC之延展类目与协议(笔记)
类目的定义与类的定义相似:
1、声明

@interface NSString (CSayHi)       NSString是目标类;CSayHi是类目名称; 且后面没有 :NSObject

2、实现

@implementation NSString (CSayHi)

3、文件名

NSString+CSayHi


类目:

类目也成为分类(特征)

1、可以为已知的类添加方法,哪怕是你没有源代码的类;

2、通过类目添加方法会成为原始类的一部分;

3、与原类中的方法同级;

4、而且会被子类继承;

类目的用处:

1、可以扩展别人的类,可以作为子类的替代方式;

2、把同一个类的代码放到多个文件中,便于多人协作。

注意:

1、不能在类目中添加实例变量;

(category,不可以有私有变量,但是可以有@property的声明,property的声明只是声明了该类的set,get方法(需要引用该category的头文件),但是category实现的m文件里面根本就没有生成这两个方法,所以你使用self.xxx时,会挂掉,错误提示:没有get/set方法。

你在category的m文件里面@synthesize 也无法声明.

也就是说,有声明,无实现。)

2、可以为同一类添加多个类目,但类目名和方法名不能重复。

3、不要随意重写类中的方法(避免其原始程序的失效)


延展:

延展是一种特殊形式的类目。

1、编写在类的实现文件中;

2、延展中定义的方法在类本身中实现。

作用:

定义私有方法。

注意:

延展不写类目名时,表示延展中定义的方法,必须实现。

如果提供了类目名称,则可以选择性实现。

扩展类的方法:
1. 修改类源代码
2. 编写此类的子类
3. 类目 (Category)
4. 延展 (Extension)
5. 协议 (Protocal)

OC中只允许单继承。
但是OC中可以实现类似多继承的方法:实现OC多协议,达到实现类似多继承的目标。

1、协议
2、遵守协议的类
3、调用代理的类
(面向对象的过程就是面向编写类的过程。)
SEL=@selector(方法名)

协议:
协议就是一套标准;它只声明了方法,不具体实现,由接收协议的对象负责实现。
OC的协议是由@protocol声明的一组方法列表
要求其他的类去实现,相当于@interface部分的声明。
@protocol  协议名称
@end

确认协议:
定义的协议必须要被某些类实现;
类中需要实现协议中定义的方法;
此过程称为确认协议。
@interface   类名:父类名<协议名称,协议名称2,...>
@end
注意:
确认协议时应实现协议中@required修饰的方法;
可以选择性实现@optional 修饰的方法。
使用【对象 conformsToProtocol: @protocol (SalerProtocol )]判断是否遵循协议

代理模式:
即本身不做实际的事情,而要求其他人去做;
例如要洗衣服,不是自己洗,而是让配偶去帮自己洗;此时配偶就是我们的代理。

@interface People : Person

 @property (copy,nonatomic) NSString * name;

 @property(assign,nonatomic)iddelegate;

此时,标示了任何确认了MarryProtocol的对象 ,delegate为代理。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值