Nil возвращается из метода, который должен возвращать ненулевое значение
Я реализую UIKeyInput
, UITextInputTraits
, а также UITextInput
и с этим я должен реализовать:
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return nil;
}
Однако, анализируя мой проект, я получаю: "nil возвращается из метода, который должен возвращать ненулевое значение".
Какой будет правильный способ избавиться от этого? Должен ли я сделать аборт?
2 ответа
Решение
Не возвращайся nil
, Если у вас нет UITextSelectionRects для возврата, верните пустой массив.
На самом деле, если вы посмотрите на источник заголовка, метод имеет 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);
Таким образом, вы не можете вернуть ноль или ноль. Вместо этого верните пустой массив примерно так:
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return @[];
}