首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定和目标/操作?

绑定和目标/操作?
EN

Stack Overflow用户
提问于 2010-02-06 07:46:42
回答 2查看 391关注 0票数 0

我目前有一个颜色井,它可以跟踪保存在NSUserDefaults中的颜色。它被绑定到一个NSUserDefaultsController。但是,我也想监听颜色的变化,以便可以相应地更新我的视图。因此,除了绑定之外,我还在preferences控制器中添加了一个目标/动作到颜色well,该控制器发布了一个带有该颜色的通知。

1)同时拥有目标/动作和绑定有多安全?是否有可能出现延迟,或者它们可能不同步并报告不同的值?

2)当我在我的IBAction方法中获取颜色时,我应该从用户默认值中获取还是从颜色井中获取?

下面是我的colorChanged:操作:

代码语言:javascript
复制
- (IBAction)colorChanged:(id)sender
{
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[colorWell color] forKey:@"color"];
[notificationCenter postNotificationName:@"ColorChangedNotification" object:self userInfo:userInfo];
}

那么我应该这样做吗:

代码语言:javascript
复制
[NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"color"]];

或者:

代码语言:javascript
复制
[colorWell color];

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-06 13:26:34

1)同时拥有目标/动作和绑定有多安全?是否有可能出现延迟,或者它们可能不同步并报告不同的值?

我认为在很大程度上,这应该是可以的。最好的方法就是测试它。

2)当我在我的IBAction方法中获取颜色时,我应该从用户默认值中获取还是从颜色井中获取?

你绝对,绝对应该直接从颜色井中得到它。为什么?保存到用户默认设置时可能会出现延迟。见鬼,在应用程序终止之前,默认设置甚至只能保存一次,而且还是可以的。(好吧,这并不完全正确,但仍然)默认值的主要目的是在应用程序启动之间持久化数据,而不是在应用程序的生命周期内。

票数 3
EN

Stack Overflow用户

发布于 2010-02-06 09:54:51

同时拥有目标/动作和绑定是安全的。如果您使用NSNotificationCenter发布通知,则通知将同步传递给观察者。(有一个明显的警告,那就是它并不神奇--如果观察者A在收到通知时向观察者B发送了一条消息,那么观察者B就还没有收到通知。多线程进一步增加了复杂性。)这是在the documentation for NSNotificationCenter.中调用的

直接从颜色井读取颜色很快,从IBAction读取颜色可能也没问题。如果在应用程序启动时运行代码,最好从用户默认设置中读取,因为颜色井的绑定可能还没有更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2211266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档