问题标签 [nsnotificationcenter]

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

xcode - 容器视图控制器与 iPad 应用程序上的单个自定义视图控制器

我正在将现有的 iPhone 应用程序转换为 iPad 应用程序。iPhone 应用程序是使用容器视图控制器 (UINavigationController) 构建的,它首先向用户展示了一个自定义视图控制器 (UITableViewController),该视图控制器基于行选择推送了一个自定义视图控制器 (UIViewController)。

在 iPad 应用程序中,我直接向用户展示了自定义 UIViewController(没有容器控制器),然后允许通过 UIPopoverController 选择不同的选项。在 myAppDelegate.m 中,我只是使用以下方法将自定义 UIViewController 添加到窗口:

在 myCustomViewController.m 中,我通过在 viewWillAppear 中注册方向更改通知来大量修改视图:

然后我在 didRotate: 方法中测试方向并得到非常奇怪的结果。仅仅加载视图就被调用了三遍?它似乎还报告了与视图的先前绘图相对应的方向?

我正在阅读文档,似乎将子视图添加到窗口(没有容器类)不会导致调用 viewWillAppear: 方法,但在我的情况下,它似乎正在被调用,只是不可靠。

我应该为这个应用程序使用其他模式吗?我只是想加载一个自定义视图并使用两个弹出框控制器(没有其他导航)?

- 井架

顺便说一句 - 如果我将自定义 viewController 推送到我的应用程序委托中的 UINavigationController 上,它会完全正常工作。我只是不需要这个应用程序的导航控制器。

0 投票
1 回答
3745 浏览

ios - 由于 NSUserDefaultsDidChangeNotification 导致后台线程上的 UI 更改

我正在调试一个问题,该问题偶尔会导致我的应用程序崩溃并WebTryThreadLock在崩溃报告中显示一条消息。看起来应用程序正在崩溃,因为NSUserDefaultsDidChangeNotification正在后台线程上发送和接收。我在收到通知时进行 UI 更改,并了解强烈建议不要在后台线程上进行 UI 更改。

如果NSUserDefaultsDidChangeNotification有时(如果不总是)在后台线程上发送,那么处理这个问题的最佳方法是什么?像下面这样的东西似乎过分但可能是必要的。

0 投票
2 回答
4714 浏览

xcode - NSNotificationCenter 添加?

我有两个视图,当您从一个切换到另一个时,它们会向即将加载的视图调用通知以刷新内容。奇怪的是,第一次加载视图时,它会调用一次,下一次调用两次,以此类推。我得出的结论是,这是因为每次加载视图时都会不断添加它们。由于 dealloc 永远不会被调用,它仍然存在并且现在会继续添加。

那么有没有办法在被添加来解决这个问题之前检查通知是否存在?

这是我的 viewDidLoad

还有我的交易:

谢谢!
库尔顿

编辑1:

我在 UINavigationController 中显示我的视图并在它们之间切换。这是我刷新不同视图的代码:

0 投票
2 回答
534 浏览

iphone - NSNotification 查询——递归视图控制器多次调用和注册相同的通知

我有一个关于 NSNotificationCenter 的问题。我有 3 个视图控制器正在注册相同的推送通知,应用程序的流程如下:

情况1:

  1. View Controller 1 注册通知
  2. 视图控制器 2 被初始化并从视图控制器 1 显示为模态
  3. View Controller 2 注册通知
  4. 视图控制器 3 被初始化并从视图控制器 2 显示为模态
  5. View Controller 3 注册通知
  6. 通知被触发

我的所有视图控制器(VC1、VC2 和 VC3)都会响应这个通知吗?我只希望我最顶层的视图控制器响应此通知。如果视图层次结构中存在其他 VC,则会单独触发通知。

案例二:

  1. View Controller 1 注册通知
  2. 视图控制器 1 得到一个自我调用,并在前一个视图控制器上显示为模态。
  3. View Controller 1 再次注册通知
  4. 步骤 2 和 3 再重复一次。
  5. 通知被触发

在这里,我希望我的顶级 VC 响应此通知。如果视图层次结构中存在其他 VC,则会单独触发通知。6. 通知被触发

0 投票
2 回答
2702 浏览

ios - Xcode - iOS 内存泄漏让我抓狂我认为是 NSNotificationCenter,但希望新的眼睛能看到我看不到的东西

此处的代码是从 RootViewController 启动的模态视图,用于显示带有缩略图幻灯片的视频,然后将定时指令绑定到该电影。

一切正常,但是有一个内存泄漏/缺乏释放,我只是看不到寻找并花了三天时间试图修复它,是时候寻求帮助了......

如果我通过注释掉 NSNotificationCenter 来禁用它(在 .m 中突出显示)我没有任何关于内存的问题并保留定时文本。但我也没有任何缩略图。我已经尝试 [[NSNotificationCenter alloc] removeObserver:self];在很多地方插入,看看是否会为我摆脱它。但很可惜,无济于事。

我也尝试过发布“backgroundTimer”,但当我尝试编译和运行时并没有给它留下太大的印象。

从本质上讲,我第一次加载模式视图时,没有任何问题,一切看起来都很好 - 但是,如果我用-(IBAction)close:(id)sender;它关闭它,似乎有些东西没有释放,因为下次我启动同一页面时,内存使用量会增加大约 30%(大约是缩略图生成所使用的数量),并且每次我重新启动模态视图时都会增加大致相同的数量。

请记住,我是这方面的新手,对于那些知道的人来说,这个错误可能是一个愚蠢的错误。但是为了完成这个项目,我很乐意接受你对我的任何辱骂。

这是代码:

。H

.m

——</p>

——</p>





这个应用程序已经大量使用 UIWebView (只是简单的 sux),所以我正在努力做正确的事情并正确地做。

0 投票
2 回答
3433 浏览

ios - KVO 与 NSNotifications

使用 KVO 代替NSNotifications 的更“通用”(并且我认为更强大)功能有什么优势吗?

0 投票
1 回答
139 浏览

objective-c - iOS:跨控制器发送消息

我在 menuviewcontroller 上有一个 menucell,在 mapviewcontroller 中有一个按钮。

当我单击 mapviewcontroller 中的按钮时,我想将 menucell 内容设置为 null。

我该怎么做呢?

0 投票
1 回答
7416 浏览

iphone - NSNotification removeObserver 问题

我要么是大脑受损,要么是对 NSNotificationCenter 缺乏了解

问题是,如果我创建一个观察者,并且在下一行将尝试像这样删除它:

我明白了

我一行一行地添加和删除观察者只是为了说明一点。在我的代码中,我将在 dealloc 中使用 remove。

所以有什么想法为什么它告诉我我一开始没有添加和观察者?

0 投票
3 回答
5858 浏览

iphone - 如何使用 Objective-C++ 在 C++ 类中向 NSNotificationCenter 添加观察者?

我有一个 C++ 类,我最近从 *.cpp 重命名为 *.mm 以支持 Objective-c。所以我可以添加以下objective-c代码。

  • 如何/我可以在 C++ 中编写 notificationHandler 方法吗?
  • 设置 addObserver:self 属性会起作用吗?
0 投票
1 回答
320 浏览

ios - NSNotification 如果数据改变

假设我有一个解析 RSS 提要的程序。

我有一个在不断检查更新的线程中运行的方法。如果找到更新,则会创建一个 NSNotification。这是一个愚蠢的实现吗?

是否可以在 NSNotification 中传递自定义参数,例如更新的 elementId。