美文网首页
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