我正在实施一个操作表,发现即使没有在头文件中包含协议,代码也能正常工作。不包含它会产生影响吗?
由于
振
答案 0 :(得分:3)
没有运行时影响*,但包括协议规范:
允许编译器验证您是否已实现所有必需的方法(例如,忘记使用UITableViewDataSource实现-tableView:cellForRowAtIndexPath:
会发出警告),并且
允许库编写者将类型限制为可以肯定地响应预期方法的委托(例如,将非UIActionSheetDelegate分配给id<UIActionSheetDelegate>
将发出警告)
(*:从技术上讲,协议列表可以在运行时查询,因此包含它可能会改变某些运行时行为,但这种情况很少见。)