setNilValueForKey:
Invoked by setValue:forKey: when it’s given a nil value for a scalar value (such as an int or float).
当使用 setValue:forKey: 把一个 nil 值赋值给纯量(如 float, int, …)时,setNilValueForKey: 会被调用
Subclasses can override this method to handle the request in some other way, such as by substituting 0 or a sentinel value for nil and invoking setValue:forKey: again or setting the variable directly. The default implementation raises an NSInvalidArgumentException.
子类可以重写这个方法优雅地处理设置 nil 的情况,例如使用 0 来替代 nil,并调用再次 setValue:forKey: 或直接赋值给 _key。