Objective-C中的类目与协议

注:小编在技术上还是有很大的纰漏,发表此博客希望各位有路过的大牛人物给予评论,给于指正,小编在此非常感谢!此文章为小编自己做的笔记,有不当之处望请指出,小编很是感谢,若用于一些抄袭的勾当,出现一些不可挽回的问题,小编在此声明不负任何责任;
类目的定义与类的定义相似:
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为代理。
posted @ 2015-06-19 00:50  最后一片青云净土  阅读(129)  评论(0编辑  收藏  举报