OStack程序员社区-中国程序员成长平台

标题: ios - 处理未实现协议(protocol)所需方法的更好解决方案 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 11:56
标题: ios - 处理未实现协议(protocol)所需方法的更好解决方案

当一个协议(protocol)所需的方法没有实现时,Xcode 只是给出一个警告

警告:协议(protocol) 'xxx' 中的方法 'xxx' 未实现

我有一个自定义 View ,例如具有 dataSource 属性的 UITableView。为了确保 dataSource 不是 nil 并且响应我这样做的方法

NSAssert(self.dataSource != nil, @"menu's dataSource shouldn't be nil");
if ([self.dataSource respondsToSelectorselector(menu:numberOfRowsInColumn]) {
    return [self.dataSource menu:self
            numberOfRowsInColumn:self.currentSelectedMenudIndex];
} else {
    NSAssert(0 == 1, @"required method of dataSource protocol should be implemented");
    return 0;
}

我想知道是否有更优雅的方法来处理所需方法的缺失?

有什么想法吗?



Best Answer-推荐答案


该解决方案对我来说看起来不错,因为可以为生产代码禁用断言,使其成为仅限开发人员的健全性检查。

如果协议(protocol)可以由第三方代码(即某种插件)实现,则应该引发异常。

然而,稍微更容易编码和理解的断言将是:

NSAssert(NO, @"blah blah blah");

关于ios - 处理未实现协议(protocol)所需方法的更好解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26082983/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4