objective-C protocol协议

  一切皆有可能

协议定义了一组方法,让其他类实现。
协议本身不是类。
协议是一组未实现的方法。
协议是一组有一定相关联。
协议中的方法由其他人实现
 

协议通过<>进行实现,一个类可以同时实现多个协议,中间通过逗号分隔;

协议中不能定义属性、成员变量等,只能定义方法;

协议只是定义了方法的列表,协议不负责实现方法,目的是让别的类来实现。

两个协议重要协议:1. NSCopying  2,NSCoding

 

@required表示必须实现的方法

 

@optional表示可选实现的方法

 

 

 
//
//  main.m

#import <Foundation/Foundation.h>

#import "Student.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        Student *stu=[[Student alloc]init];
        [stu finishTeask];
        [stu dontlate];
        [stu wearNeat];//可选
   
    }
    return 0;
}

 

在协议中个默认的方法都是必须实现的
协议有两个关键字:@required和@optional
@required表示必须实现的方法
而@optional表示可选实现的方法
//
//  Scsy.h

#import <Foundation/Foundation.h>
//@protocol Scsy协议<父类>
@protocol Scsy <NSObject>
@required//必须实现
//声明
//完成作业
-(void)finishTeask;
//不迟到
-(void)dontlate;
@optional//可选
//衣着整洁
-(void)wearNeat;
//
//  Student.h

#import <Foundation/Foundation.h>
#import "Scsy.h"    
@interface Student : NSObject<Scsy>

@end
//
//  Student.m

#import "Student.h"

@implementation Student
-(void)finishTeask{
    NSLog(@"完成作业");
}
-(void)dontlate{
    NSLog(@"不能迟到");
    
}
-(void)wearNeat{
    NSLog(@"衣着整洁");
}
@end

 

posted on 2015-11-04 12:04  沙->仙人掌  阅读(124)  评论(0编辑  收藏  举报