[objective-c]教程六-----Protocol and Catalog

objective-c是一门主要用于Apple's Mac OS X and iOS的面向对象编程语言.也是用于Apple Cocoa API的主要语言.本系列教程覆盖了objective-c的一些特定内容,包括:类,方法和内存管理.

本节原文地址

Protocol

objective-c 里的protocol和JAVA里的interface相似.

首先在头文件里定义一个protocol:

@protocol StringUtils

-(void) outputString;

@optional
-(void) outputOptionalString;

@required
-(void) outputString2;

@end

"@optional"定义了一些可选的方法;

"@required"定义了所有必须实现的方法.


扩展协议:

@protocol TextUtils < StringUtils, CharUtils >

定义一个接口用于支持该协议(适配协议)

#import "StringUtils.h"

@interface MyString: NSObject <StringUtils, SomeOtherProtocol> {
   ...
}

...
@end

代码实现:

#import "MyString.h"

@implementation MyString
...

-(void) outputString {
...
}

-(void) outputString2 {
...
}

...
@end

确认一个对象是否支持该协议:

[obj1 conformsToProtocol:@protocol(StringUtils)]

声明一个用于确认是否支持该协议的对象:

MyString <StringUtils> *obj1;
id <StringUtils> *obj2

Category

objective-c的Category是在不扩展类的情况下给一个已经存在的类增加方法.这将会允许增加一个方法给已经存在的类.

例如,添加一个新的validation方法构建NSString类.

#import <Cocoa/Cocoa.h>
            
@interface NSString (Validation)
- (BOOL) isPhoneNumber;
@end

#import "NSString-Validation.h"
            
@implementation NSString (Validation)

- (BOOL) isPhoneNumber
{
  ...
}
@end

注:

1.Category不能增加新的实例变量.

2.Category可以覆盖类已经存在的方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值