码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C中的类目与协议

时间:2015-06-19 01:26:09      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:

类目的定义与类的定义相似:
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为代理。

Objective-C中的类目与协议

标签:

原文地址:http://www.cnblogs.com/iOS-mainstay/p/4587470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!