我正在开发一组简单的可重用代码.我创建了一个协议来对一组方法进行分组,并在运行时向用户询问数据.
我认为设置代表是强制性的.我可以通过抛出声明原因的断言来强制开发人员在运行时设置委托吗?
这是一个很好的做法,通过使用断言来强制我的类的用户?它有设计级别的缺陷吗?
首先是"良好做法"问题:
如果不是,请不要使方法可选.
不是一个关键的,更多的意见
initWithDelegate:如果一个委托需要init方法,我早些时候意识到了这一点.只需将@required指标添加到协议中,即可在编译时发出警告:
@protocol SuperAwesomeProtocol <NSObject>
@required
-(void) requiredMethod1;
-(void) requiredMethod2;
@optional
-(void) optionalMethod1;
-(void) optionalMethod2;
@end
//and making your delegate specific:
@property (nonatomic, assign) id<SuperAwesomeProtocol> delegate;
Run Code Online (Sandbox Code Playgroud)
您仍然可以通过以下方式导致运行时断言
if (!delegate || ![delegate respondsToSelector:@selector(requiredMethod1)])
{
//Assertion failure
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |