iOS中使用協議(protocol)的用法
本文來源地址:http://www.osjoin.com
協議在ios中是和代理一塊成雙成對的使用的.在後面的UI階段我們會經常遇見,如,datable...
如何定義一個自己的協議尼.列位上眼吶!
1.協議的表示:@protocol
2.如何建立一個協議檔案步驟如下:
New File->OS X ->Cocoa ->Objective-c protocol.然後輸入一個協議的名稱.可以隨便起.咱們這裡叫(CarsStandard)
3:協議內的用法
協議內的方法可以分為,必須實現函式,用@required,和非必須實現函式@optional.一旦函式上方有@required表示,在類中必須把該方法實現.
4:如何在了類檔案中呼叫協議
4.1 要實現協議,必須要在類的標頭檔案中引入協議的 .h 檔案.
方法為#import "CarsStandard.h"
4.2 在類的.h檔案中的繼承後面 用<>來表示要實現的協議.在<協議名稱>l裡寫上你的協議的名稱.
4.3 在類的.m檔案實現協議的方法.[在協議中用@required修飾的方法必須要實現].
現在看一下程式碼:
例子描述如下:
汽車就會有能開動,自身重量,行駛速度.車身顏色,車的生產廠家.我們暫定後兩個為@optional方法.來創 建一個協議,然後再建立一個汽車來實現該協議.
CarsStandard.h 協議的檔案為:
#import <Foundation/Foundation.h>
@protocol CarsStandard <NSObject>
@required
/**
* 能跑的功能
*/
- (void)runFun;
/**
* 車的重量
*/
- (void)weight;
/**
* 車的速度
*/
- (void)speeds;
@optional
- (void)colors;
- (void)address;
@end
建立一個汽車類來實現協議Cars
先看一下cars.h檔案
#import "CarsStandard.h"
@interface Cars : NSObject <CarsStandard>
{
NSString *_name;
NSInteger _prices;
}
- (id)initWithName:(NSString *)name pr:(NSInteger)price;
我們在這裡要實現協議,就首先用#import來把協議引用進來,然後再繼承類的後面用<>把協議檔名寫入即可.特別提醒,在這檔案裡,協議裡有@required修飾的方法,我們可以省去不用再.h檔案中宣告,當然寫了也不會報錯.
在看一下cars.m檔案
@implementation Cars
- (id)initWithName:(NSString *)names pr:(NSInteger)prices
{
self = [super init];
_name = names;
_prices = prices;
return self;
}
/**
* 能跑的功能
*/
- (void)runFun
{
NSLog(@"車必須能跑");
}
/**
* 車的重量
*/
- (void)weight
{
NSLog(@"車必須不能超載");
}
/**
* 車的速度
*/
- (void)speeds
{
NSLog(@"車必須不能超速");
}
@end
我們可以看一下協議檔案的方法,這幾個是用@required修飾的方法,所以我們在類的.m檔案中必須要實現.其他沒注意事項.
看一下在man.m中的程式碼
想要呼叫實現協議的類檔案.同樣必須首先#import引入類的.h
#import "Cars.h"
然後具體呼叫
Cars *car = [[Carsalloc]initWithName:@"紅旗" pr:123];
[car runFun];
初始化類檔案.
接著想上面用法即可實現.
- 如有問題可新增QQ群:234812704(洲洲哥之說)
- 登入www.osjoin.com 第一時間檢視最新文章
- 歡迎各位一塊學習,提高逼格!
-
也可以新增洲洲哥的微信公眾號
更多訊息
更多信iOS開發資訊 請以關注洲洲哥 的微信公眾號,不定期有乾貨推送: