《Objective-C編程 第二版》筆記17:protocol

作用

協議是一組方法聲明,其中部分方法是必需的,另一些是可選的。

如何使用

@required:遵守此協議的類必須實現它修飾的方法(默認修飾符)

@optional:遵守此協議的類可以不實現它修飾的方法

@protocol PersonProtocol <NSObject>
@required
- (void)eat;
@optional
- (void)run;
@end

協議可以聲明屬性,但必須在遵守此協議的類中調用@synthesize ivar;才能正常使用。

// 協議
@protocol PersonProtocol <NSObject>
@property (nonatomic, copy) NSString *name;
@end

// Person
@interface Person : NSObject <PersonProtocol>
@end

@implementation Person
@synthesize name;
@end

// 使用
Person *person = [Person new];
person.name = @"111";
NSLog(@"name---%@", person.name);

不能聲明成員變量

特點

1、協議只有方法的聲明,沒有方法的實現

2、遵守協議只能在類的聲明@interface上,不能在類的實現@implementation上。

3、一個協議可以遵守多個其他協議

4、一個協議若遵守了其他協議,就擁有了其他協議所有方法的聲明

5、一個協議可以被任何類遵守,一個類可以遵守多個協議

6、一個類若遵守了某個協議,就必須實現協議中@required修飾的方法

7、若父類遵守了某個協議,子類也就遵守了此協議

例子

@interface AWEViewController () <UITableViewDelegate, UITableViewDataSource>

 

發佈了151 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章