[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可以覆蓋類已經存在的方法.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章