iOS 里的 Protocol"/>
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:(i
更多推荐
iOS 里的 Protocol
发布评论