2017-08-28 22 views
0

我执行UIKeyInputUITextInputTraits非空值的方法,并UITextInput回来,与我需要实现:无来自有望重返

- (NSArray *)selectionRectsForRange:(UITextRange *)range 
{ 
    return nil; 
} 

然而,在我的分析我得到的项目:“无法从预期返回非空值的方法返回”。

什么是摆脱这种正确的方式?我应该做一个中止吗?

+0

“如果我只是终止程序”?那是什么意思?拔下电脑上的插头? – matt

+0

@matt我改变了它,我的意思是说,我应该做一个中止()。 –

+0

@SerPounce请检查我的答案。 TY。 – GeneCode

回答

1

不返回nil。如果您没有 UITextSelectionRects返回,则返回一个空数组。

+0

有没有比初始化长度为1的NSArray更清晰的方法并返回它? –

+0

不是1的长度。空。 – matt

+0

不要紧,我只是做了:return [[NSArray alloc] init]; –

3

其实如果你看看头源,该方法有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 @[]; 
}