Cocoa绑定的NSHandlesContentAsCompoundValueBindingOption到底做了什么?

Cocoa绑定的NSHandlesContentAsCompoundValueBindingOption到底做了什么?,第1张

概述将NSArrayController的contentArray绑定到NSUserDefaultsController时,必须选中绑定上的“Handles Content As Compound Value”复选框.这已成为传统智慧,但该选项实际上做了什么? 我写了一个小测试应用程序并且可以观察到打开选项后,整个contentArray被传递给绑定源的setValue:forKey:每当你编辑数组中 将NSArrayController的contentArray绑定到NSUserDefaultsController时,必须选中绑定上的“Handles Content As Compound Value”复选框.这已成为传统智慧,但该选项实际上做了什么?

我写了一个小测试应用程序并且可以观察到打开选项后,整个contentArray被传递给绑定源的setValue:forKey:每当你编辑数组中元素的属性时.选项关闭时,仅修改元素对象本身,并且不通知绑定源.

这解释了为什么需要使NSUserDefaultsController工作的选项(否则它不会注意到您已经编辑了数组中的某些内容而从未保存更改).但它并没有解释谁在做什么不同的确切.阵列控制器是否负责此选项并在观察到更改时写回内容数组?如果是这样,它如何与选项的既定目的相关,即“使用可逆值变换器将复合值暂时转换成较小的部分”?

解决方法 这里解释的消息流很好: http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/MessageFlow.html#//apple_ref/doc/uid/TP40002149-186285

这是我尝试回答的问题:

>使用valueForKeyPath从NSUserDefaultsController检索contentObject,contentArray或contentSet绑定指定的原始内容对象:>使用值转换器的transformedValue:方法转换内容对象>将用户的新值插入到已转换的内容对象中>使用inversetransformedValue对内容对象进行逆变换:>新的逆转换内容对象被设置为新的内容对象,并使用setValue:forKeyPath传递给NSUserDefaultsController:

总结

以上是内存溢出为你收集整理的Cocoa绑定的NSHandlesContentAsCompoundValueBindingOption到底做了什么?全部内容,希望文章能够帮你解决Cocoa绑定的NSHandlesContentAsCompoundValueBindingOption到底做了什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1009282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存