iOS 里的 Protocol

iOS 里的 Protocol

协议 (Protocol) 是一个非常灵活的东西,它考验着开发者的抽象能力,按照思路,用起来还是很好用的。

但 Objective-C 中的使用真的是很少,用的最多的就是 Delegate 了,这也是苹果官方用的最多的方式。

这都源自于 Objective-C 最初的设计思路,也许并没有希望 Protocol 发挥很大的作用(纯属个人臆测)。

在 Swift 中,协议终于成为了主力队员,相关内容可以查看这篇文章

Protocol

Protocol 仅仅是一种声明,它可以声明方法、属性,然后在需要的类中遵循它。

@protocol SomeProtocol <NSObject>

@required;
@property (nonatomic, copy) NSString *property;

@optional;
- (void)method;

@end

首先,protocol 是可以继承的,它继承自 <NSObject> 协议,Objective-C 真是把面向对象里面的继承已经做的深入骨髓。

其次,protocol 是可以声明属性和方法的,如果声明了属性,在使用这个协议的时候,类的实现里面需要自己去实现 setter getter 方法,当然也可以 @synthesize 来自动生成。

@required; 是必须实现的意思,如果遵循了这个协议,就必须实现其下方的方法和属性。不然会在调用的时候导致 Crash。

@optional 非必须实现。

看看最基础的 NSObject 类,它就遵循 <NSObject> 协议,一些基础的抽象属性和方法都在里面:

@protocol NSObject

- (BOOL)isEqual:(id)object;
@property (readonly) NSUInteger hash;

@property (readonly) Class superclass;
- (Class)class OBJC_SWIFT_UNAVAILABLE("use 'anObject.dynamicType' instead");
- (instancetype)self;

- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值