菜鸟教程小白 发表于 2022-12-13 15:38:37

ios - 从预期返回非空值的方法返回 Nil


                                            <p><p>我正在实现 <code>UIKeyInput</code>、<code>UITextInputTraits</code> 和 <code>UITextInput</code> 并且我需要实现:</p>

<pre><code>- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
    return nil;
}
</code></pre>

<p>但是,在分析我的项目时,我得到:“从预期返回非空值的方法返回 nil”。 </p>

<p>摆脱这种情况的正确方法是什么?我应该中止吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>实际上,如果您查看 header 源,该方法附加了 <code>NS_ASSUME_NONNULL_BEGIN</code> 标记。所以简而言之 <code>selectionRectsForRange</code> 变成了一个非空返回方法。</p>

<pre><code>//
//UITextInput.h
//UIKit
//
//Copyright (c) 2009-2017 Apple Inc. All rights reserved.
//

#import &lt;CoreGraphics/CoreGraphics.h&gt;
#import &lt;UIKit/UITextInputTraits.h&gt;
#import &lt;UIKit/UIResponder.h&gt;

...

NS_ASSUME_NONNULL_BEGIN// &lt;--- HERE!
..
- (CGRect)firstRectForRange:(UITextRange *)range;
- (CGRect)caretRectForPosition:(UITextPosition *)position;
- (NSArray *)selectionRectsForRange:(UITextRange *)range NS_AVAILABLE_IOS(6_0);
</code></pre>

<p>所以你不能返回 null 或 nil。而是像这样返回一个空数组:</p>

<pre><code>- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
    return @[];
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 从预期返回非空值的方法返回 Nil,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/45928348/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/45928348/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 从预期返回非空值的方法返回 Nil