不务正业之OC(十三)–protocol

协议:类似一个类的接口,没有父类,不能定义实例变量;定义方法,需要被另外类实现
使用场合:
1、需要别的类实现方法
2、声明未知类的接口
3、两类之间进行通讯

两关键词
@required
@optional

 
//创建协议
//  MyProtocol.h
 
#import <Foundation/Foundation.h>
 
@protocol MyProtocol <NSObject>
 
@required
- (void) requiredMethod;
 
@optional
- (void) optionalMethod;
 
 
//  Person.h
 
#import <Foundation/Foundation.h>
#import "MyProtocol.h"
 
@interface Person : NSObject <MyProtocol>
 
@end
 
//  Person.m
 
#import "Person.h"
 
@implementation Person
- (void) requiredMethod{
    NSLog(@"must require!");
}
 
- (void) optionalMethod{
    NSLog(@"may optional!");
}
@end
 
//  main.m
 
#import <Foundation/Foundation.h>
#import "Person.h"
 
int main(int argc, const char * argv[])
{
 
    @autoreleasepool {
        Person *person = [[Person alloc] init];
        [person requiredMethod];
        [person optionalMethod];
    }
    return 0;
}

Post a Comment