1、關(guān)于協(xié)議(protocol)
如果該協(xié)議只供一個(gè)類(lèi)對(duì)象使用,可直接寫(xiě)在使用者類(lèi)對(duì)象中
其他如果該協(xié)議可供多個(gè)(A)類(lèi)對(duì)象使用,那就需要考慮把該協(xié)議提取出來(lái)放到一個(gè)單獨(dú)的protocol.h文件中,在需要使用該協(xié)議的(A)父類(lèi)(B)中遵守該協(xié)議實(shí)現(xiàn)祖能,在其他子類(lèi)(A)中可以選其重寫(xiě)協(xié)議方法。這樣在其他類(lèi)中(C)可直接通過(guò)A 調(diào)用協(xié)議方法
例:
import <Foundation/Foundation.h>
@protocol HelloProtocol <NSObject>
//默認(rèn)就是required;
@required
- (void)requiredMethod;
@optional
- (void)optionalMethod;
新建Person類(lèi)蛾洛,在Person.h中引入?yún)f(xié)議养铸,如下:
import <Foundation/Foundation.h>
import "HelloProtocol.h"
@interface Person : NSObject<HelloProtocol>
@end
Person.m如下:
import "Person.h"
@implementation Person
-
(void)requiredMethod{
NSLog(@"requiredMethod——必須實(shí)現(xiàn)的方法");
} -
(void)optionalMethod{
NSLog(@"optionalMethod——選擇實(shí)現(xiàn)的方法");
}
@end
之后在main.m中創(chuàng)建Person的對(duì)象去調(diào)用這些方法:
import <Foundation/Foundation.h>
import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *jack = [[Person alloc] init];
[jack requiredMethod];
[jack optionalMethod];
}
return 0;
}