问题标签 [nsnotifications]

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 投票
2 回答
5837 浏览

iphone - 如何在 iphone 应用程序中为弹出视图控制器添加通知?

我看过 iPhone MP 电影播放器​​的示例应用程序 - 控制器。

他们在示例代码上添加了通知。

在上面的代码中,当 MPMoviePlayerController 完成加载时,它会调用 moviePreloadDidFinish 方法。

同样,我想在用户从导航栏按下后退按钮时触发一个方法(通过导航控制器返回上一个视图控制器)。

我不知道如何为此添加通知。

0 投票
2 回答
809 浏览

objective-c - Snow Leopard 中 NSWorkspace 和 NSNotificationCentre 的基于块的 API 存在问题

我在使用 Snow Leopard 的新的基于块的 API 来观察来自 NSWorkspace 的 NSNotificationCenter 的通知时遇到了一些麻烦。

如果我使用传统的基于选择器的方法注册通知,那么我能够观察到所需的通知。如果我尝试使用需要一个块的新方法,那么它就不起作用。

在下面的代码块中,将 usingBlockNotifications 设置为 YES 或 NO 应该会产生相同的结果,即在应用程序启动时将“didReceiveNoticationTest:已调用”打印到控制台,但是当它设置为 YES 时我没有收到消息。

关于我做错了什么有什么建议吗?

0 投票
1 回答
1126 浏览

iphone - iPhone SDK:处理键盘外观

当键盘出现时,我需要移动视图控制器的 UI 元素。我通过在我的应用程序委托中注册键盘通知来做到这一点:

[[NSNotificationCenter defaultCenter] addObserver:observer selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];

然后按照 Apple 的规定处理通知(我显示了类似的键盘代码)以上下滚动视图:

- (void)keyboardWasHidden:(NSNotification*)aNotification { CGRect viewFrame = [self.view frame]; viewFrame.origin.y += keyboardSize.height - TOOLBAR_HEIGHT; self.view.frame = viewFrame; }

到现在为止还挺好。现在问题描述:

当我执行此代码以显示 OS 3.0 特定消息 UI 时:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; [self presentModalViewController:picker animated:YES];

当键盘显示在实际的邮件 UI 中时,我仍然会收到键盘通知,它会滚动我的视图并因此破坏我的 UI(请注意,邮件控制器占据整个屏幕,此时我的视图甚至不可见)。

我希望暂时禁用键盘通知,所以我的滚动代码不会被这一行调用:

[[NSNotificationCenter defaultCenter] removeObserver:self];

但这无济于事,键盘甚至仍然被张贴。

当消息 UI 创建键盘时,我应该怎么做才能避免在键盘上做出反应?

0 投票
1 回答
604 浏览

cocoa - 在不耦合的情况下为 NSNotification 使用定义名称字符串

我将在我的应用程序中使用 NSNotifications 来解耦代码。

我希望编译器在使用字符串作为通知名称时帮助我,即,如果我输入错误,我希望编译器告诉我。

为此使用普通字符串是行不通的,因为编译器不会知道如果我输入"myNotificaion"了我的真正意思"myNotification"

一种方法是使用 #defines 或 const NSString 变量,但这意味着它们必须在文件中声明,要么是它们源自的类,要么是全局包含的文件。

将它们声明在它们源自的类中的问题是,无论在哪里监听通知,都需要包含它,因此创建了我不想要的耦合。

全局文件的问题在于它可能会变得又长又乱,并且会包含许多不相关的东西。

有没有办法在没有这种耦合或不整洁的情况下做到这一点?

0 投票
2 回答
384 浏览

objective-c - 从模型类与 UIProgressBar 交互

我的 Cocoa Touch 应用程序中有一个 MainViewController,它显示了一个包含视图的状态UIProgressBar视图。

在 MainViewController 中,FlickrImage模型对象被创建和迭代。对象本身与FlickrImageFlickr API 交互,这需要时间,这就是我希望用户看到进度条的原因。现在的挑战(至少对我来说是;)现在是与progress来自对象的 UIProgressBar(发送消息)进行交互FlickrImage。我是使用 aNSNotificationCenter还是可以将 MainViewController 声明为转发类FlickrImage并直接与 UIProgressBar 交互?

0 投票
6 回答
20842 浏览

iphone - NSNotificationCenter 与委派(使用协议)?

它们各自的优缺点是什么?
我应该在哪里专门使用它们?

0 投票
1 回答
3824 浏览

iphone - 使用 NSNotification 在后台线程上执行方法

我正在尝试在后台线程上执行操作。过去我用过

来实现这一点。但是,我已经注册了这个函数以在 NSNotification 中执行,我需要为 UIActivityIndi​​cator 设置动画。UIActivityIndi​​cator (据我了解)需要在主线程上运行,但此通知也在执行此操作并阻止它。

有没有人知道如何让它在后台线程上运行?谢谢提前。

0 投票
2 回答
553 浏览

iphone - Iphone在应用程序上取消注册nsnotifications会终止为什么?

我一直想知道为什么有必要在应用程序将终止方法中取消注册您的 nsnotifications。我知道如果我不这样做,我不会注意到任何事情,那么不这样做有什么影响呢?任何帮助将不胜感激。

谢谢你。

-奥斯卡

0 投票
1 回答
160 浏览

iphone - 监听来自 tableviewcell 的事件

我有一个自定义的 uitableviewcell。它有一个uitextfield。我希望父 tableview 控制器在按下 uitextfield 键盘返回键时采取行动。如何在不创建应用程序范围的事件通知的情况下将通知发送到父表视图?或者,这是最好的方法吗?

0 投票
2 回答
539 浏览

iphone - 核心数据:不保留如何维护?

我正在尝试调试一些 iPhone Core Data 代码的一个非常邪恶的问题。

设置是这样的:我有一个线程来轮询 Web 服务并将其结果发送NSNotification到主线程(传入userDict、一堆字符串和NSNumbers)。我正在使用 Tim Hatcher 的通知库传递给主线程。

主线程接收 userDict,然后继续提取其值并将它们插入到新的托管对象中。到现在为止还挺好。

然而,我遇到了这个问题,但不是立即。在线程将其结果发布到主线程并将新对象保存到上下文后,我可以执行一系列操作(包括一个NSFetchRequest和几个关系分配),这会导致EXC_BAD_ACCESS尝试访问其中一个获取的托管对象的属性。

另一个有趣的事情是我可以让问题消失。我可以通过[userDict retain]在线程中放入一个单个的来做到这一点,然后将其放入 aNSNotification中以发布到主线程中以保存到托管对象中。NSString只要我在接收线程中接收到值,我是否通过创建一个新的对象来相互防火墙并不重要,没有那个它仍然会崩溃retain

是什么赋予了 ???