Objective C 中某些情况下如何使用 nonnull

Exactly how to use nonnull in certain cases in Objective C

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

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

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

的隐式转换

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

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

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

拆分此行:

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

进入这些:

NSData *data = [header dataUsingEncoding:NSUTF8StringEncoding];
if (data) {
    [imagePropertiesFileHandle writeData:data];
}