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];
}
我已经阅读了很多关于可空性的帖子,但我终究无法让我的警告消失。这里有几个例子:
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];
}