IOS ——OC——  协议的使用总结

.协议(定义了一组方法让其他的类实现)
@required :    定义的是必须实现的方法
@optional : 定义的是可选实现的方法
 
(1).协议声明了可以被其他的类实现的方法。协议本身不会去实现。
 
(2)协议不是类,只是一个其他对象可以实现的接口。

定义一个协议:

#import <Foundation/Foundation.h>
@protocol MarryProtocol <NSObject>//定义一个结婚协议,结婚协议也可以继承其它的协议。
@required   //必须遵守的协议,在遵守MarryProtocol协议的类的.m文件中去实现里边的方法。
- (void)washClothes;
- (void)cook;
@optional  //可选的协议
- (void)makeMoney;
@end

代理(委托)模式:自己有需求,但是让别人去做。

定义一个Men类

#import <Foundation/Foundation.h>
#import "RoomService.h" 
@interface Men : NSObject
@property(nonatomic,retain)NSString * name;
@property(nonatomic,assign)id<MarryProtocol> mate;//定义一个代理
-(id)initWithName:(NSString *)name;
-(void)needEat;
@end

定义一个Women类

#import <Foundation/Foundation.h>
#import "MarryProtocol"
@interfaceWomen : NSObject <MarryProtocol>  //遵守协议
@property(nonatomic,retain)NSString * name;
-(id)initWithName:(NSString *)name;
@end

在Men的实现里边

-(void)needEat
{
    [self.mate  cook];
}

在Women的实现里边有一个方法

-(void)cook

{

      NSLog(%@"wonmen正在做饭");

}

主函数里边

men.mate = women;

[men needEat];

打印出:wonmen正在做饭

4.协议也可以写在一个类里边,用到的时候引入类的头文件就可以。

感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4983889.html