我问,因为我想将该功能分别实现到一个类中。我当然可以继承NSObject,但由于它只是我想要的一种方法,我讨厌把所有其他垃圾都放到我的对象中。
答案 0 :(得分:0)
从命令+单击方法:
给定标识属性的值和键,设置属性的值。给定一个识别一对一关系的对象和一个关键字,将该对象与接收者联系起来,如果有一个对象则与先前相关的对象无关。给定一个集合对象和一个标识多对多关系的密钥,将集合中包含的对象与接收者联系起来,如果有的话,则与先前相关的对象无关。
此方法的默认实现执行以下操作:
在接收器的类中搜索名称与模式-set:匹配的访问器方法。如果找到这样的方法 检查其参数的类型。如果参数类型不是 对象指针类型但值为nil -setNilValueForKey:is 调用。 -setNilValueForKey的默认实现:引发一个 NSInvalidArgumentException,但你可以覆盖它 应用。否则,如果方法参数的类型是a 对象指针类型该方法只是用值作为调用 论点。如果方法参数的类型是其他类型的那个 由-valueForKey完成的NSNumber / NSValue转换的反转:是 在调用方法之前执行。
- 醇>
否则(没有找到访问者方法),如果接收者的班级' + accessInstanceVariablesDirectly方法返回YES,搜索 名称匹配的实例变量的接收器类 模式_,_is,或者按顺序排列。如果 找到这样的实例变量,其类型是对象指针 键入值保留,并在实例中设置结果 变量,在实例变量的旧值首次发布之后。 如果实例变量的类型是其他类型,则设置其值 在从NSNumber或NSValue进行相同类型的转换之后 1。
- 否则(没有找到访问器方法或实例变量),调用-setValue:forUndefinedKey:。默认实现 -setValue:forUndefinedKey:引发NSUndefinedKeyException,但是 你可以在你的申请中覆盖它。