程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Objective-C基礎:協議(@protocol)

Objective-C基礎:協議(@protocol)

編輯:關於C語言

Objective-C基礎:協議(@protocol)


C++以純虛函數來定義抽象接口,繼承了抽象接口的類必須要實現所有父類的純虛函數。OC中的協議類似於C++的純虛函數。   1.聲明協議。@protocol後面接協議的名稱。   @protocol NSObject   @end   如果一個協議繼承於另外一個協議,聲明方法為尖括號裡面填入父協議名稱。   @protocol SonProtocol<BaseProtocol>   @end   2.類符合某個協議。在類的聲明中用尖括號填入協議名稱。   @interface Car : NSObject <NSCopying>   @end   @interface Car : NSObject <NSCopying, NSCoding>   @end   3.協議方法聲明可以用@optional和@require來表明符合這個協議的類是否必須實現協議裡面的方法。@require為必須,@optional為可選。這點與C++不一樣,   C++必須實現所有純虛接口。     @protocol WorkerProtocol <NSObject> @optional - (void)doSomeOptionalWork;   @required - (void)doSomeRequiredWork; @end 上面代碼表明符合WorkerProtocol協議的類必須實現doSomeRequiredWork,而doSomeOptionalWork為可選。   4.可以在方法參數和實例變量裡面明確地指出對象必須符合某協議。     @interface Manager : NSObject @property (weak) id <WorkerProtocol> delegate;   - (void)doWork; @end  上面的代碼表明delegate必須符合WorkerProtocol協議。如果不符合,編譯器會警告。如下代碼編譯器會警告Assigning to 'id<WorkerProtocol>' from incompatible type 'NSString *__strong'     NSString* name = @"akon"; manager.delegate = name; [manager doWork];

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved