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 @[];
}
Другие вопросы по тегам