我正在实施UIKeyInput
,UITextInputTraits
和UITextInput
,并且我需要实施:
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return nil;
}
然而,在分析我的项目时,我得到:" nil从一个预期返回非空值的方法返回"。
摆脱这个的正确方法是什么?我应该中止吗?
答案 0 :(得分:3)
实际上,如果查看标题源,该方法会附加NS_ASSUME_NONNULL_BEGIN
标记。因此,简而言之,selectionRectsForRange
将成为非null返回方法。
//
// 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或nil。而是像这样返回一个空数组:
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return @[];
}
答案 1 :(得分:1)
不要返回nil
。如果你没有
要返回UITextSelectionRects,返回一个空数组。