问题标签 [addobserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1192 浏览

ios - 来自 addObserver:selector:name:object 的 IOS 选择器不在视图控制器中执行

上下文我们正在开发一个可以使用 opencv 的 ios 应用程序,并且必须将我们更改viewcontrollers为 .mm

.mm 中的 opencv 相关函数不会执行涉及 ui 更改的代码。 GazeTracker是一个NSObject告诉用户凝视状态的,它工作正常

我们考虑过使用观察者,以便在viewController调用的 stateChanged 中使用选择器,该选择器将在状态gazeTracker更改时执行。

" stateChanged" 永远不会被调用。我们最初认为它只是gazeTracker,所以我们将它替换为“ self”(意思是viewController),但它仍然无法正常工作。我们对“ observer”的理解是,当对象中的值发生变化时,selector就会调用 。但是我们不知道“ object”中“ addObserver:selector:name:object”的目的。

0 投票
1 回答
214 浏览

ios - 观察财产的性质

我正在尝试观察我的 AppDelegate 的属性以更新表格视图。这有点复杂,所以这是我的一些代码。

每当更新数组时,我都想更新 UITableView 的内容。我觉得有一种更有效的方法可以做到这一点,但似乎无法弄清楚。我已经在线阅读了 Apple 的文档,有点困惑。提前谢谢!!:)

0 投票
4 回答
2248 浏览

iphone - 如何删除观察者

我有一个启用 ARC 的项目

viewDidLoad中添加的观察者很少

我想删除所有观察者,所以我在viewDidUnload中添加了以下行

现在我的问题是,这是否会删除所有观察者?

如果没有怎么办?

更新

如果我想删除一个观察者怎么办?

你能帮我吗。

0 投票
1 回答
3608 浏览

ios - NSNotification - 在发布通知之前检查是否添加了观察者

我的代码在以下位置崩溃:

我的假设是我在添加观察者之前发布通知。

有没有办法在发布通知之前检查活跃观察者的名单?

0 投票
2 回答
1046 浏览

objective-c - addObserver:forKeyPath 正在使应用程序崩溃,KVO,目标 c

我通过使用类别来做视差效果:

详情如下 UIScrollView+Parallax.h

UIScrollView+视差.m

我正在通过执行向表格添加视差

但是,[self addObserver:forKeyPath:options:context:nil]在没有任何线索的情况下不断使应用程序崩溃。如果我将此行注释掉并且应用程序没有崩溃但平行效果不起作用。

对此问题的任何想法。请帮忙。谢谢

0 投票
2 回答
1018 浏览

ios - NSNotificationCenter addObserver 被忽略

NSNotifications在使用 XCode 5.1(和 CorePlot 1.4)之前,两个对象工作得很好。但是,使用 XCode 5.1.1 (Coreplot 1.5) 我发现如果addObserver调用在init方法内部,它实际上不会被注册(仅对于这两个类,它在不同类的父对象中工作)。我什NSLog至在通话之前和之后都放了一个,以确保代码仍然有效。这两个对象都被它们的共享父级强烈引用,并且它们的父级会毫无问题地收到必要的通知。而且,我有一个NSLogdealloc哪里removeObserver- 它没有提前调用,因为对象被正确保留。

同样,自从我上次使用 XCode 5.1(和 CorePlot 1.4)编译它以来,发送通知的对象或这两个类的代码没有任何改变。init并且在父级中使用了相同的调用,并且效果很好。昨晚我唯一的解决方案是将addObserver调用重构为一个新方法,并在init.

但是,我不明白为什么这是必要的。谁能想到一个addObserver放在中间的原因init会被“忽略”,但是当在另一个由 调用的方法中时init,它会起作用吗?

编辑和注释:

我添加了更多代码来显示初始化。我还添加了注释,它是 CorePlot 的图形视图,CorePlot 最近也更新到 1.5(我忘了)——这可能是问题的根源。

Lead_the_zeppelin 建议重新分配它似乎是可能的。但是,从 NSNotificationCenter 到 -now-dealloc'd 对象的调用不会使程序崩溃(注意,不调用 dealloc - 我有一个NSLog)?init我可以通过在, 和之后打印对象实例字符串来轻松测试这一点。我昨晚确实对此进行了测试,要求提供实例,但我认为我没有将那部分复制到init.

0 投票
1 回答
1278 浏览

ios - 键值观察不工作IOS

您好我正在开发 IOS 应用程序,我在其中使用带有键值对的添加观察者。但它不起作用。我做了以下事情:

但它没有调用上述方法。如果我forKeyPath改为contentOffset那么它工作正常。但我想改变那个值。难道我做错了什么?需要帮忙。谢谢你。

0 投票
1 回答
1938 浏览

ios - 即使看起来与 addObserver 平衡,removeObserver 也会使我的应用程序崩溃

所以我有一个类,CustomCell : UITableViewCell有一个addObserver:forKeyPath:options:context:方法,称为 in -awakeFromNib,和一个removeObserver:forKeyPath:context:方法,称为 in -dealloc

CustomCell.m

在使用这些单元格加载视图后,我得到以下日志,然后再次退出(触发 dealloc)

我已经仔细检查(ctrl+f),这些方法在其他任何地方都没有被调用。因此,对于任何情况,似乎都有一个addObserver(具有独特的上下文)和一个removeObserver(具有该上下文)

0 投票
0 回答
79 浏览

ios - addobserver 获取键值的问题

因为我是使用观察者模式的新手。我的应用程序在 iOS7 和更低版本上运行良好。

我使用 XCode 6 将我的应用程序升级到 iOS8。当我第一次在 XCode 6 中打开我的应用程序并运行它时,没有显示任何错误消息,我的应用程序崩溃了。

我尝试应用调试器和异常断点。

我发现我的应用程序addObserver:在行代码处崩溃。我正在做的是:

  1. 我的应用程序首先打开登录屏幕,
  2. 用户必须输入用户名和密码。
  3. 如果它的新用户然后登录,用户名和密码将保存到数据库中。
  4. 内部用户可以选择更新他的密码并保存在数据库中。

现在当用户第二次登录时,我的观察者没有发现密码的变化。

同一行代码在较低版本上运行良好。我做错了什么?我的代码:

0 投票
0 回答
147 浏览

macos - 不能同时设置 addObserver 方法的名称和对象参数

使用此代码

我无法收到我想要的通知。

但是,如果我将名称或对象更改为 nil,它就可以工作。我想知道这两个参数是否不能同时设置为非零?</p>