1

我已经阅读了许多关于可空性的帖子,但我无法终生让我的警告消失。这里有几个例子:

playPause = @[[UIImage imageNamed:@"Play"], [UIImage imageNamed: @"Pause"]];
[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]];

其中每一个都会收到此警告:“从可空指针 'NSData * _Nullable' 隐式转换为不可空指针类型 'NDSata* _Nonnull'

用 NS_ASSUME_NONNULL_BEGIN/End 包围代码也不起作用。

我尝试了多种(非空)__nonnull 等组合,但似乎无法找到关键字的神奇位置来使警告消失。

4

1 回答 1

2

问题是该NSString dataUsingEncoding:方法可以返回nil。但NSFileHandle writeData:不接受nil参数。

拆分这一行:

[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]];

进入这些:

NSData *data = [header dataUsingEncoding:NSUTF8StringEncoding];
if (data) {
    [imagePropertiesFileHandle writeData:data];
}
于 2016-09-13T21:23:36.897 回答