Точно, как использовать ненулевое в определенных случаях в Задаче C
Я прочитал много постов об обнуляемости, но я не могу из-за своей жизни убрать мои предупреждения. Вот пара примеров:
playPause = @[[UIImage imageNamed:@"Play"], [UIImage imageNamed: @"Pause"]];
[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]];
Каждое из них получает следующее предупреждение: "неявное преобразование из указателя с нулевым значением" NSData * _Nullable "в тип указателя с ненулевым значением" NDSata* _Nonnull "
Окружение кода NS_ASSUME_NONNULL_BEGIN/End также не работает.
Я пробовал большое количество комбинаций (ненулевых) __nonnull и т. Д. И, похоже, не могу найти волшебное расположение ключевых слов, чтобы предупреждение исчезло.
1 ответ
Решение
Проблема в том, что NSString dataUsingEncoding:
метод может вернуть nil
, Но NSFileHandle writeData:
не принимает nil
параметр.
Разделить эту строку:
[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]];
В эти:
NSData *data = [header dataUsingEncoding:NSUTF8StringEncoding];
if (data) {
[imagePropertiesFileHandle writeData:data];
}