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

Null passed to a callee that requires a non-null argument

我多年来一直使用它来将 CIImage 转换为 NSData:

  NSData *data = [imageRep representationUsingType: NSPNGFileType
                            properties:nil];

现在在 El Capitan 上我在第二行有这个错误:

Null passed to a callee that requires a non-null argument

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

NSData *data = [imageRep representationUsingType: NSPNGFileType
                                      properties: @{}];

但我怀疑这会在未来给我带来麻烦。

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

Is this the correct way to solve this problem?

是的。

API 中似乎有几个地方接受了 nil 值而不是空集合,即使它没有被记录为有效。 Apple 添加的 non-nil 注释以更好地支持 inter-working 和 Swift 只是突出显示这些。