1. 程式人生 > >iOS中使用協議(protocol)的用法

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開發資訊 請以關注洲洲哥 的微信公眾號,不定期有乾貨推送:

    這裡寫圖片描述