gpt4 book ai didi

ios - 在 iOS 中将通知从模型发送到 Controller

转载 作者:行者123 更新时间:2023-11-28 22:38:45 25 4
gpt4 key购买 nike

我做了一个类,叫做 Timer。它的指定初始化程序启动一个计时器,其值以秒为单位。它很好用。但是,我在使用计时器滴答更新 Controller 时遇到了问题。

现在,对于每个滴答,我都发送一个带有 userInfo 的 NSNotificationCenter,这是一个包含当前时间的简单字典,这听起来不是最好的方法......

NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:self.timerCount] forKey:@"timerCount"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"TimerCountChanged"
object:self
userInfo:dict];

我应该使用其他技术还是以正确的方式使用?

提前致谢!

编辑:我需要使用不同的值来初始化不同的定时器。我尝试使用委托(delegate),但我的 Controller 中只有一种方法可以更新所有这些计时器的用户界面!如果我做类似的事情会很糟糕吗?将 UIButton 传递给我的模型似乎也不是最佳解决方案,但它确实有效。

-(void)timer:(Timer *)timer didTriggerAt:(NSTimeInterval)time andButton:(UIButton *)button
{
[button setTitle:[NSString stringWithFormat:@"%.0f", time] forState:UIControlStateNormal];
}

- (IBAction)startCountDown:(UIButton *)sender
{
self.timer1 = [[Timer alloc] initWithTimeInSeconds:10 andButton:sender];
self.timer1.delegate = self;
}

我的 MainView 中有 3 个计时器,用户可以随时启动它们。它们也可以有不同的时间,这也是由用户定义的。

最佳答案

发送通知很好,但您可能不会像平时那样观察到它。

有时它会延迟,您可能会在不规则的时间间隔内观察到它们。

你可以使用

  1. 委托(delegate)模式。

  2. 通过selector调用方法

编辑:

来自

Apple documentation on Performance CodeSpeed on Notifications .

The fewer notifications you send, the smaller the impact on your application’s performance. Depending on the implementation, the cost to dispatch a single notification could be very high. For example, in the case of Core Foundation and Cocoa notifications, the code that posts a notification must wait until all observers finish processing the notification. If there are numerous observers, or each performs a significant amount of work, the delay could be significant.

关于ios - 在 iOS 中将通知从模型发送到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com