我执行UIKeyInput
,UITextInputTraits
非空值的方法,并UITextInput
回来,与我需要实现:无来自有望重返
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return nil;
}
然而,在我的分析我得到的项目:“无法从预期返回非空值的方法返回”。
什么是摆脱这种正确的方式?我应该做一个中止吗?
我执行UIKeyInput
,UITextInputTraits
非空值的方法,并UITextInput
回来,与我需要实现:无来自有望重返
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return nil;
}
然而,在我的分析我得到的项目:“无法从预期返回非空值的方法返回”。
什么是摆脱这种正确的方式?我应该做一个中止吗?
不返回nil
。如果您没有 UITextSelectionRects返回,则返回一个空数组。
有没有比初始化长度为1的NSArray更清晰的方法并返回它? –
不是1的长度。空。 – matt
不要紧,我只是做了:return [[NSArray alloc] init]; –
其实如果你看看头源,该方法有NS_ASSUME_NONNULL_BEGIN
标签附加到它。所以简而言之,selectionRectsForRange
成为非空返回方法。
//
// UITextInput.h
// UIKit
//
// Copyright (c) 2009-2017 Apple Inc. All rights reserved.
//
#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UITextInputTraits.h>
#import <UIKit/UIResponder.h>
...
NS_ASSUME_NONNULL_BEGIN // <--- HERE!
..
- (CGRect)firstRectForRange:(UITextRange *)range;
- (CGRect)caretRectForPosition:(UITextPosition *)position;
- (NSArray *)selectionRectsForRange:(UITextRange *)range NS_AVAILABLE_IOS(6_0);
所以你不能返回null或零。而是返回一个空数组,像这样:
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return @[];
}
“如果我只是终止程序”?那是什么意思?拔下电脑上的插头? – matt
@matt我改变了它,我的意思是说,我应该做一个中止()。 –
@SerPounce请检查我的答案。 TY。 – GeneCode