目标C:在头文件中不包括<uiactionsheetdelegate>协议有什么影响?</uiactionsheetdelegate>

时间:2011-04-05 06:34:49

标签: objective-c uiactionsheet

我正在实施一个操作表,发现即使没有在头文件中包含协议,代码也能正常工作。不包含它会产生影响吗?

由于

1 个答案:

答案 0 :(得分:3)

没有运行时影响*,但包括协议规范:

  1. 允许编译器验证您是否已实现所有必需的方法(例如,忘记使用UITableViewDataSource实现-tableView:cellForRowAtIndexPath:会发出警告),并且

  2. 允许库编写者将类型限制为可以肯定地响应预期方法的委托(例如,将非UIActionSheetDelegate分配给id<UIActionSheetDelegate>将发出警告)

  3. (*:从技术上讲,协议列表可以在运行时查询,因此包含它可能会改变某些运行时行为,但这种情况很少见。)