一切皆有可能
协议定义了一组方法,让其他类实现。
协议本身不是类。
协议是一组未实现的方法。
协议是一组有一定相关联。
协议中的方法由其他人实现
协议通过<>进行实现,一个类可以同时实现多个协议,中间通过逗号分隔;
协议中不能定义属性、成员变量等,只能定义方法;
协议只是定义了方法的列表,协议不负责实现方法,目的是让别的类来实现。
两个协议重要协议: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