问题标签 [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 投票
1 回答
1096 浏览

iphone - 为什么 addObserver 会立即崩溃?

我有各种操作(源自 NSOperation)来通过 Internet 进行异步查询。按照惯例,我通过观察它们的 isFinished 属性来确定它们何时完成。

当一种特定类型的操作完成时,我想使用第一个的信息创建一个后续类型的操作。但是当我这样做时,在操作上调用 addObserver 会使我的应用程序因访问错误而崩溃。由于观察者是在随机线程中调用的,所以我尝试创建后续操作并将观察者设置在主线程上。没有不同。这是在 observeValueForKeyPath 中完成的:

上下文是字符串的 void*;我对许多其他可以正常工作的操作使用相同的语法。以下是上下文的定义方式:

有人在这里猜吗?谢谢!

编辑:感谢您的回复。没有生成崩溃日志。它只是在 addObserver 行上出现错误访问而退出,无论我是在主线程还是输入了 observeValueForKeyPath 的后台线程上执行,都会发生这种情况。

0 投票
2 回答
1434 浏览

iphone - viewWillAppear and UIApplicationDidBecomeActiveNotification

I am using the UIApplicationDidBecomeActiveNotification to refresh my tableview when the app becomes active. My problem is that in my ViewWillAppear, I am also calling a method to refresh this table's data.

This is causing the table to be refreshed twice upon application launch. How can I get one of them not to fire when the app is initially launched? Refreshing the table has some intensive processing of network and local data.. so I would really like o only perform this action once.

Thanks.

0 投票
5 回答
21564 浏览

objective-c - 在 UIViewController 中向 NSNotificationCenter 添加和删除观察者

查看各种 Apple 示例(例如Add Music),在这些示例中,我看到他们将观察者添加到默认值NSNotificationCenterviewDidLoad然后将它们删除dealloc。这似乎很危险,因为viewDidLoad可以多次调用而不dealloc被调用。然后这将多次添加相同的观察者,导致处理程序被多次调用。

对此的解决方案是同时删除 中的观察者viewDidUnload,但这意味着同一观察者可以第二次被删除,dealloc这似乎是一个潜在的问题。

我错过了什么?

0 投票
1 回答
908 浏览

ios - 无法触发 AppDelegate 中可访问性的观察者

我的 AppDelegate 中有上面的代码块,用于创建可达性观察者,旨在通过应用程序触发 myReachabilityDidChangedMethod。

但是,无法触发位于 AppDelegate 中的 myReachabilityDidChangedMethod,当我打开或关闭我的 wifi 时,我在模拟器和 ipad 上都对其进行了测试,但两者都没有任何响应。

0 投票
2 回答
1926 浏览

ios5 - AVPlayer observeValueForKeyPath

我有一个播放流内容的音频应用程序。问题是有时,当信号很弱时,它会停止播放。网络仍然可以访问,但缓冲区似乎已经空了。

我尝试实现一个观察者来监视玩家的状态变化,但它不起作用,该方法永远不会被调用。

作为一个特殊性,AVPlayer 实例位于 AppDelegate 中,因为我有多个视图,并且播放器必须继续播放显示的任何视图。所以这是一段示例代码:

有谁知道为什么没有提出该事件?我在该方法中有 2 个警报,但没有人被触发,这意味着它没有进入该方法。所有这一切的目标是尝试实现一种让玩家在发生这种情况时重新启动的方法。

谢谢 !

0 投票
1 回答
5495 浏览

ios - 自我添加观察者

一个非常简单的问题,但我似乎找不到答案。(开发 iOS 5+ 应用程序)。

在我的AppDelegate中,我有一个属性,我们称之为它@property (non atomic) BOOL aFlag;。如果值发生变化,我希望我的AppDelegate得到通知。这是我尝试过的(一切都发生在 中AppDelegate.m),这与我将两个不同的对象与观察者“链接”时相同:

observeValueForKeyPath:不叫。

我哪里错了?谢谢。

0 投票
1 回答
77 浏览

objective-c - 在对象释放期间取消注册对象的观察者

不确定我问的是否正确,但无论如何我都会尝试一下。

我有一个程序可以调用这段代码......

最终 localCalculateTimeFiles 消失了,我想 removeObserver 当前的代码位(粗略地说)。如果我什么都不做并且 localCalculateTimesFiles 消失而我没有执行正确的 removeObserver,则运行时会引发异常。我认为它过去更像是一个警告,但现在程序异常终止。

假设我在正确的时间将所有对象指针正确并指向正确的位置。我想做的是让 localCalculateTimeFiles 在释放观察者的途中(可以这么说)删除观察者。

似乎根据 Apple 文档,我可以向 localCalculateTimeFiles 添加一个看起来像这样的方法来完成这项工作......

我将用注销观察者的新逻辑替换处理 log_file 的逻辑。显然,我必须确保我的所有指针都是正确的,以确保 removeObserver 方法具有正确的操作项。让我正确地做到这一点,这是有道理的还是我完全离开了?

0 投票
1 回答
225 浏览

cocoa - 如何观察像“object.attribute”这样的关键路径

问候,我是可可初学者,这是我的第一篇文章:P

我正在尝试制作一个非常简单的节奏游戏但卡住了,这就是我得到的:



这不起作用(我已经正确初始化了audioPlayer,它可以播放声音但是当它的currentTime值发生变化时无法被捕获)

我用另一个属性 "double testNumber" 测试这些代码,将其设置为 "keyPath" 的参数,当我触摸屏幕时将其增加一,然后效果很好。但是我应该怎么做才能观察到 audioPlayer.currentTime ,我只想在这个值发生变化时得到通知,任何其他建议也将不胜感激。我指望你,请帮助我,谢谢:)

0 投票
1 回答
655 浏览

iphone - 添加观察者:名称

我正在使用这样的 addObserver :

一切正常,但我认为当我不再需要它时移除观察者可能是一种很好的形式......我发现我需要使用这一行:

问题是,当我更改我的 addObserver 行以包含名称以便 removeObserver 知道要删除哪个观察者时,不再调用通知。此行运行但在添加名称时被忽略:

我可以将名称设置回 nil 并且它再次起作用。有人知道我在这里做错了什么吗?

谢谢!

0 投票
2 回答
135 浏览

ios - NSNotification 注册地点问题

我有一个标签栏应用程序,其中有 2 个标签(2 个视图控制器)。我需要将通知从选项卡 2(视图控制器 2)发布到选项卡 1(视图控制器 1)。但问题是我必须首先转到选项卡 1(视图控制器 1)才能注册通知,如果我不这样做,则通知永远不会注册。似乎只有在我选择视图后才分配视图,然后移动到选项卡 2(视图控制器 2)以发布通知。

在 viewDidLoad 和 viewWillAppear 中注册通知,如下所示:

那么,如何避免先选择选项卡 1(视图控制器 1)然后从选项卡 2(视图控制器 2)发布通知?

谢谢!!