问题标签 [nsnotification]

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 回答
338 浏览

ios - UITableView 使用通知编辑?

我有一个带有编辑/完成按钮的 UITableView。当它进入编辑模式时,我想进行一些更改。目前,我已经覆盖了 setEditing:animated,但这似乎很可疑。tableView进入编辑模式时是否有通知发送,还是我应该坚持setEditing?

0 投票
1 回答
282 浏览

core-data - awakeFromFetch 中的核心数据 NSNotification 导致崩溃

我敢肯定有人以前看过这个,我可能遗漏了一些明显的东西......这是简要说明:我有一个核心数据应用程序,它有 Car 和 CarMileage,更准确地认为是汽车旅行(汽车 < -->>汽车里程)。CarMileage 包含一些属性,包括里程(浮动、行程长度)和 forWork (BOOL)。我制作了一个包含 mileageForWork 的自定义 CarMileage 类(浮点数,如果 forWork = YES 则返回里程,如果 forWork = NO 则返回 0)。我还让 +keyPathsForValuesAffectingMileageForWork 返回一组里程和 forWork。现在我需要计算该年特定汽车的总百分比里程数。

目前我在 CarMileage:

然后汽车有:

加载自动保存的文件后,我转到包含用于 Car 和 CarMileage 的 NSArrayController 的 Vehicles 部分。日志显示“send notification”、percentMileageForWork 的值和“awakeFromFetch”,然后程序暂停,XCode 中的线程选项卡弹出 szone_malloc_should_clear, EXC_BAD_ACCESS code = 2。

我完全不知道为什么会这样。在我经验不足的情况下,问题在于应该在哪里观察通知。毕竟,帖子会产生日志。任何想法为什么它会崩溃?

编辑(10 月 14 日) - 我试图将事物更改为键值观察模型,以便在CarMileage-awakeFromInsert-awakeFromFetchCarMileage 中,对象将 Car 添加为自身的观察者。这可以按预期进行提取,但是当插入对象时,我的-updatePercentMileageForWork方法不会触发;看起来这是因为添加观察者时尚未设置 Car 与 CarMileage 的关系(所以它实际上根本没有设置观察者)。我猜有一种方法可以移动-addObserver:forKeyPath:options:context在将新的 CarMileage 对象添加到关系集的方法中调用 Car,所以我没有遇到这个问题。我不知道我是否应该弄乱 Core Data 自己的代码,这可能是高度优化的,此外,我不知道该代码应该如何正常阅读,所以我担心完全搞乱我的关系. 我听说过一些关于“mogenerator”的东西,但我找不到文档,而且当我已经很困惑时,我在使用另一个我不太了解的程序时感到有点不舒服......

有谁知道我应该-addObserver:forKeyPath:options:context从哪里打电话,如果是从哪里建立关系,我会怎么做?或者我将如何按照我原本打算的方式通过通知来做到这一点?

0 投票
1 回答
9237 浏览

video - MPMoviePlayerController 播放完成后不会自动关闭电影(ios 6)

我可能没有很好地措辞我的标题,也许更正确的说法是我的 NSNotification 并没有在我的电影播放完成后取消它的视图。我发现其他人有这个问题但没有解决方案,似乎这可能是我正在运行的 iOS 6 的问题。

视频播放完毕后,您需要按“完成”关闭,但我希望它自动关闭,因为一旦我解决了这个问题,我将使用 MPMovieControlStyleNone。这是我的代码,去掉了未使用的部分:`

0 投票
8 回答
20261 浏览

objective-c - 如何检查当前是否正在显示 UIViewController?

如何检查UIViewController当前是否正在显示?

UIViewControllers正在听NSNotifications- 即使它们没有显示(即未显示)。所以我可以UIViewController在后台观察10NSNotificationsNSNotificationCenter。当 anNSNotification被发布和接收时UIViewController,我想知道它当前是否正在显示。如果不是,我将设置一个布尔值,以便在呈现视图时对其进行处理。如果它当前正在显示,我会做更多的事情,比如立即更新表格,等等......

0 投票
2 回答
1794 浏览

objective-c - 为什么 removeFromSuperview 不删除我的电影子视图?Xcode

我正在尝试制作一部无需点击“完成”按钮即可自行播放的电影。我认为这是最近的 iOS 6 问题,因为我完全按照教程进行操作,并且当我插入 NSLogs 时,NSNotification 和 removeFromSuperview 正在被识别,但是电影一旦结束就会停留在那里。这是我的代码,请帮助:

0 投票
2 回答
865 浏览

iphone - NSNotification 中未更新文本字段

我正在做一个简单的教程,NSNotification并在正确执行它时遇到一些问题。当我单击第一个视图上的按钮时,第二个视图中的文本字段没有得到更新。当我通过在 中放置 aNSLog进行调试时receiveNotification,没有响应。不知道为什么receiveNotification没有被调用。

代码如下所示:

视图控制器.h

视图控制器.m

SecondViewController.h

需要一些指导。

0 投票
1 回答
581 浏览

objective-c - 从弹出窗口刷新视图

我正在使用 Xcode 4.5 并针对 iOS 5 及更高版本。
我有一个弹出框,允许用户更改底层视图的背景。

点击“按钮”时,需要我点击两次才能看到更改。
我正在使用NSNotification. 我试过委托,但它什么也没做。
任何帮助或提示将不胜感激。

从 viewWillAppear 来看:

以及选择方法:

NSNotification 方法:

0 投票
1 回答
209 浏览

objective-c - 有没有办法识别 NSNotification / NSEvent 来自哪个应用程序?

我已经开始收听全球keyDown事件。有没有办法从该事件来自哪个应用程序获取信息?

处理程序接收NSNotification实例并NSEvent成为其中的一部分。我能以某种方式从这些对象中提取这些信息吗?

听力片段:

观察员:

更新

全局按键不会从任何特定应用程序发送。我真正需要的是在事件处理程序中检查当前活动的应用程序:

这会返回NSDictionary我需要的信息。

0 投票
2 回答
1073 浏览

objective-c - Objective-C中同名的类方法和实例方法

我有一个解决通知问题的方法,效果很好,但我担心这可能是个坏主意。

我有一个需要由类的每个实例和类本身处理的通知。为了处理这个问题,我正在注册类和类实例的通知。因为它是完全相同的通知,所以我将类和实例方法命名为相同。这遵循我们为如何命名通知处理程序设置的标准。

这是一个坏主意吗?是否有一些我错过的隐藏的got'ca。我会混淆未来的开发人员吗?

0 投票
1 回答
763 浏览

grand-central-dispatch - 使用 iOS GCD 和 NotificationCenter 在异步数据加载完成时提醒用户(一次异步加载多个数据集)

我正在编写一个 iPad 应用程序,在其中异步加载多层建筑的数据。一旦所有楼层的数据加载完成,我已经设置了 NSNotifications 来提醒用户。

当在 ChildViewController(弹出式 VC)中按下加载按钮时,每个楼层的数据加载将循环启动

ChildViewController 从 ParentViewController 启动。

我在 ChildViewController 中为名为“dataloaded”的通知添加了一个观察者,并设置了一个处理函数 childDataLoaded 来处理该通知。

由于 ChildViewController 可能在数据加载完成之前被解除,我还在 ParentViewController 中设置了一个观察者和处理程序(parentDataLoaded)来处理相同的“数据加载”通知。

我在 AppDelegate 中实现了数据加载函数 'parseAndSaveData'。单击 ChildViewController 按钮时调用 parseAndSaveData。它将楼层标识符(NSString)作为参数。它调用 Web 服务来获取该楼层的数据并将这些数据加载到数据库中。网络服务很快,但将数据添加到 sqllite 数据库需要更长的时间(我使用的是核心数据)。因此,我使用 dispatch_asynch 调用来调用这个数据加载部分(因为这是最耗时的部分)。

完成后的数据加载部分会发布“已加载数据”通知。

我希望此通知能够调用 ChildViewController 或 ParentViewController 中的处理程序(以在发布通知时处于活动状态)

我遇到的问题是通知是不可预测的,我看到只有一个处理程序(ChildViewController 中的那个)被调用,并且它只被调用到一个楼层,尽管所有楼层都成功加载。

任何有关上述设计和实施或替代方案的建议将不胜感激!

为@Samuel 的 dispatch_group 建议添加代码