標籤:
1 #import <Foundation/Foundation.h> 2 #import "IOSProgrammer.h" 3 #import "JavaCodingMonkey.h" 4 int main(int argc, const char * argv[]) { 5 @autoreleasepool { 6 JavaCodingMonkey * javaCodingMokey = [[JavaCodingMonkey alloc] init]; 7 [javaCodingMokey writeJavaCode]; 8 9 IOSProgrammer * iOSProgrammer = [[IOSProgrammer alloc] init];10 [iOSProgrammer sleep];11 [iOSProgrammer sing];12 [iOSProgrammer playGame]; 13 [iOSProgrammer writeIOSCode];14 15 id<IOSProgrammerProtocol> staff = iOSProgrammer;16 [staff writeIOSCode];17 18 id<IOSProgrammerProtocol> staff2 = javaCodingMokey;19 [staff2 writeIOSCode];20 21 // id 類型的指標 遵守協議後 只能調用協議中的方法22 23 24 }25 return 0;26 }
main.m
1 #import <Foundation/Foundation.h>2 // @protocol 協議的名字 <NSObject>3 @protocol IOSProgrammerProtocol <NSObject>4 @required // 必須要實現的方法 預設 不實現會有警告5 - (void)writeIOSCode;6 @optional // 可選的方法 可以實現也可以不實現7 - (void)playTaiji;8 @end
IOSProgrammerProtocol.h
1 #import <Foundation/Foundation.h>2 #import "IOSProgrammerProtocol.h"3 @interface JavaCodingMonkey : NSObject<IOSProgrammerProtocol>4 - (void)writeJavaCode;5 @end
JavaCodingMonkey.h
1 #import "JavaCodingMonkey.h" 2 3 @implementation JavaCodingMonkey 4 - (void)writeJavaCode { 5 NSLog(@"write Java Code"); 6 } 7 8 - (void)writeIOSCode { 9 NSLog(@"write ISO code");10 }11 @end
JavaCodingMonkey.m
1 #import <Foundation/Foundation.h>2 #import "IOSProgrammerProtocol.h"3 4 @interface IOSProgrammer : NSObject<IOSProgrammerProtocol>5 - (void)sing;6 - (void)sleep;7 - (void)playGame;8 @end
IOSProgrammer.h
1 #import "IOSProgrammer.h" 2 3 @implementation IOSProgrammer 4 - (void)sing { 5 NSLog(@"唱了一首 會噴火葫蘆娃"); 6 } 7 8 - (void)sleep { 9 NSLog(@"好好的休息了一下");10 }11 12 - (void)playGame {13 NSLog(@"玩了一局英雄聯盟");14 }15 16 - (void)writeIOSCode {17 NSLog(@"write iOS code");18 }19 @end
iOSProgrammer.m
三、協議的應用與功能
a.應用
1.(主要功能)規範介面(協議規範介面是強制的)
2. 實現委託代理機制(實現對象之間的通訊) 代理設計模式
b.功能
- 協議就是為了滿足統一的資料轉送
- 一個類只能繼承一個直接的父類,但可以實現多個介面(遵守多個協議),間接的實現了多繼承.
用協議實現多繼承 可定義多個協議 類遵守多個協議 實現協議中的方法 間接實現多繼承
代碼就不寫了 很簡單
Objective-C協議初識