菜鸟教程小白 发表于 2022-12-12 11:56:17

ios - 处理未实现协议(protocol)所需方法的更好解决方案


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

<p><code>警告:协议(protocol) 'xxx' 中的方法 'xxx' 未实现</code></p>

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

<pre><code>NSAssert(self.dataSource != nil, @&#34;menu&#39;s dataSource shouldn&#39;t be nil&#34;);
if () {
    return [self.dataSource menu:self
            numberOfRowsInColumn:self.currentSelectedMenudIndex];
} else {
    NSAssert(0 == 1, @&#34;required method of dataSource protocol should be implemented&#34;);
    return 0;
}
</code></pre>

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

<p>有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>该解决方案对我来说看起来不错,因为可以为生产代码禁用断言,使其成为仅限开发人员的健全性检查。</p>

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

<p>然而,<em>稍微</em>更容易编码和理解的断言将是:</p>

<pre><code>NSAssert(NO, @&#34;blah blah blah&#34;);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 处理未实现协议(protocol)所需方法的更好解决方案,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26082983/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26082983/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 处理未实现协议(protocol)所需方法的更好解决方案