Null传递给需要非null参数的被调用方

Spa*_*Dog 3 macos cocoa nsdata ciimage

我一直在使用它来将CIImage转换为NSData很久了:

  NSData *data = [imageRep representationUsingType: NSPNGFileType
                            properties:nil];
Run Code Online (Sandbox Code Playgroud)

现在在El Capitan的第二行出现此错误:

Null passed to a callee that requires a non-null argument
Run Code Online (Sandbox Code Playgroud)

我可以通过在属性上使用空数组来解决此问题,如下所示:

NSData *data = [imageRep representationUsingType: NSPNGFileType
                                      properties: @{}];
Run Code Online (Sandbox Code Playgroud)

但是我怀疑这将来会给我带来麻烦。

这是解决此问题的正确方法吗?

CRD*_*CRD 5

这是解决此问题的正确方法吗?

是。

API中似乎有一些地方接受了nil值,而不是一个空集合,即使该地方没有被证明是有效的。Apple为更好地支持与Swift的互操作而添加的non-nil注释仅强调了这些。