您的位置:首页 > 移动开发 > IOS开发

iOS protocol 协议

2016-08-25 14:20 288 查看
         协议就是用来声明一系列的方法,其只能声明方法,不能定义成员变量,只要某个类遵守了该协议,就相当于拥有这个协议中的所有的方法声明.;

1:协议的创建方法:  Newfile— Objective-C File ——Protocol

       




2:协议的声明:

@protocol Myprotocol <NSObject>
//声明一系列的方法
-(void)test1();

-(void)test2();

-(void)test3():

@end
3:协议的使用

      遵守类协议:

@interface 类名:父类名<协议名称>

@end


Person.h 中使用协议:

#import <Foundation/Foundation.h>
#import "Myprotocol.h"
#import "Myprotocol2.h"

//  :表示继承
//  <>表示遵守某个协议,只要遵守了这个协议就拥有其所有的方法声明
//  编译器不强求实现协议里面的所有方法 ,根据其属性设置来决定实现哪几个方法

@interface Person : NSObject<Myprotocol,Myprotocol3>

@end
Person.m中实现方法(此时使用协议中的方法在敲代码的时候会自动弹出):

#import "Person.h"

@implementation Person

-(void)test1{

NSLog(@"实现协议中的test1方法");
}
-(void)test2{

NSLog(@"实现协议中的test2方法");

}
-(void)test3{

}
@end


 4:协议也是可以遵守协议的:比如协议中有Myprotrocol2 协议,协议中有方法

#import <Foundation/Foundation.h>

@protocol Myprotocol2 <NSObject>

-(void)haha;

-(void)haha2;

@end
协议Myprotocol3协议中又有同样的方法:

#import <Foundation/Foundation.h>

@protocol MyProtrocol3 <NSObject>

-(void)haha;
-(void)haha2;
-(void)haha3;
@end
这时候协议MyProtocol3就可以写成:

#import <Foundation/Foundation.h>
#import"MyProtocol2.h"
@protocol MyProtrocol3 <MyProtocol2>
-(void)haha3;
@end


5:使用协议的时候后面显示的NSObject 为基协议,任何一个协议,必须要间接的或者直接的去遵守这个NSObject基协议,所有OC对象都拥有基协议中的所有方法包括(retain,release,autorelease,retainCount等)
@protocol Myprotocol <NSObject>


6:协议的名称可以和类的名称相同

7:如果父类中遵守了某个协议,那么父类就相当于拥有协议中所有的方法声明,子类中也有了,相当于子类也遵守了这个协议

            

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: