@protocol MyProtocol
//@required 要求实现,不识闲就会发出警告 默认
//@optional 不要求实现


- (void)test1;

@required 
- (void)test2;
- (void)test3;

@optional
- (void)test4;

@end


/*
    1.协议的定义
    @protocol 协议名称 <NSObject>
    //方法声明列表
    @end
    
    2.如何遵守协议
    1>类遵守协议
    @interface 类名:父类名<协议名称1,协议名称2>
    
    @end
    
    2>协议遵守协议
    @protocol 协议名称 <其他协议名称1,其他协议名称2>
    
    @end
    
    3.协议中方法声明的关键字
        1>@required (默认)
            要求实现,如果没实现,会发生警告
            
        2>@optional
            不要求实现,这样不会有警告
            
    4.定义一个变量的时候,限制这个变量保存的对象遵守某个协议
    类名<协议名称> *变量名;
    id<协议名称> 变量名;
    
    NSObject<MyProtocol> *obj;
    id<MyProtocol> obj2;
    
    如果没有遵守对应的协议,编译器会警告
    
    5.@property中声明的属性也可以用做一个遵守协议的限制
    @property (nonatomic,strong) 类名<协议名称> *属性名;
    @property (nonatomic,strong) id<协议名称> 属性名;
    
    6.协议可用定义在单独.h文件中,也可用定义在某个类中
        1>如果这个协议之用在某个类中,应该把协议定义在该类中
        
        2>如果这个协议用在很多类中,就应该定义在单独文件中
        
    7.分类可用定义在单独.h和.m文件中,也可用定义在原来类中
        1>一般情况下,都定义在单独文件
        2>定义在原来类中的分类,只要求能看懂语法

*/

 

posted on 2014-12-05 09:34  墓厄  阅读(218)  评论(0编辑  收藏  举报