美文网首页
Protocol类型限制

Protocol类型限制

作者: 越天高 | 来源:发表于2019-02-25 22:44 被阅读0次
    • 设定情景:

      • 某攻城狮A希望找一个会做饭、洗衣服的女生做女朋友,有国企工作的优先。
      • 满足条件的女生都可以向他发送消息
    • 从题目中我们得到要求

      • 会做饭
      • 会洗衣服
      • 有份好工作
    @protocol WifeCondition<NSObject>
    - (void)cooking;
    - (void)washing;
    - (void)job;
    @end
    
    • 如何在代码中要求对象必须具备这些行为?
    数据类型<协议名称> 变量名
    // 如果没有遵守协议则会报警告
    id<WifeCondition> wife = [[Person alloc] init];
    
    #import <Foundation/Foundation.h>
    #import "Wife.h"
    
    @interface Person : NSObject
    // 媳妇
    // 注意: 记住一点, 类型限定是写在数据类型的右边的
    @property (nonatomic, strong) Wife<WifeCondition> *wife;
    
    - (void)show;
    @end
    
    - (void)show
    {
        //    注意: 虽然在接受某一个对象的时候, 对这个对象进行了类型限定(限定它必须实现某个协议), 但是并不意味着这个对象就真正的实现了该方法. 所以每次在调用对象的协议方法时应该进行一次验证
        if ([self.wife respondsToSelector:@selector(cooking)]) {
            
            [self.wife cooking];
        }
        
        if ([self.wife respondsToSelector:@selector(washing)]) {
            
            [self.wife washing];
        }
        
        if ([self.wife respondsToSelector:@selector(job)]) {
            
            [self.wife job];
        }
    }
    

    相关文章

      网友评论

          本文标题:Protocol类型限制

          本文链接:https://www.haomeiwen.com/subject/gesnyqtx.html