我们相信我们都被 NSNull 类困惑过,因为 nil 不能存储在容器中,比如 NSArray、NSDictionary 等。然后 Cocoa Touch 框架给了我们 NSNull,它在容器中代表 nil。所以当我们使用 NSArray 或 NSDictionary 等时,我们需要过滤 NSNull。
然后我设计了 GNGeneralNullValue,它可以替代 NSNull,它可以用作 NSNumber 或 NSString,这些都是基本的 Objective-C 对象。GNGeneralNullValue 对象作为 NSNumber 或 NSString 的行为取决于发送给 GNGeneralNullValue 对象的方法,当发送 intValue 到 GNGeneralNullValue 对象时,它将作为 NSNumber 对象,而当发送 length 到 GNGeneralNullValue 对象时,它将作为 NSString 对象。所以当需要 NSNull 对象时,可以直接用 GNGeneralNullValue 对象替换。