gpt4 book ai didi

ios - ViewController 观察对象属性不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:00 25 4
gpt4 key购买 nike

我开始学习 Objective-C,我的第一个应用程序会很简单。我创建了一个类来处理计时器。它有一个属性 currentTime、一个 startAndPause 方法和一个 stopTimer 方法。

我在我的 ViewController 的 viewDidLoad 方法中初始化我的计时器:

 _minu = [[KUUMinuteur alloc] initWithDuration:@70];

然后,我希望我的 ViewController 观察我的 _minu.currentTime 属性变化。所以我这样做了:

[_minu addObserver:self forKeyPath:@"currentTime" options:NSKeyValueObservingOptionNew context:NULL];

在我的 viewController 中,我写了这个方法,但它永远不会触发:

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"Changing !!");
}

我不知道我做错了什么。 :(

(我的应用是单个 View 应用。)

编辑:忘记将 tempsPublic 翻译成 currentTime

最佳答案

您可能永远不会更改 KUUMinuteurcurrentTime 属性。

我想知道您是否正在尝试直接更新支持您的 currentTime 属性的 _currentTime ivar。更改属性的值时,您不想使用 ivar(initdealloc 和自定义 setter 方法(如果有)除外):

_currentTime = ...;  // wrong

你想使用setter,例如

self.currentTime = ...; // right

[self setCurrentTime:...]; // right

确保您使用 setter ,否则键值通知将不会发生。

参见 Use Accessor Methods to Set Property Values Advanced Memory Management Programming Guide 部分。 或者查看 Automatic Change Notification 键值观察编程指南的部分。

关于ios - ViewController 观察对象属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328676/

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