UILocalnotification 和委托有啥区别? [关闭]

Posted

技术标签:

【中文标题】UILocalnotification 和委托有啥区别? [关闭]【英文标题】:What is the difference between UILocalnotification and delegates? [closed]UILocalnotification 和委托有什么区别? [关闭] 【发布时间】:2013-05-14 06:30:00 【问题描述】:

我有一个应用程序,我想在该应用程序中获得通知,是否从其他类调用该方法。所以,我有点困惑是使用UILocalnotification 还是使用protocol 创建委托方法。请任何人帮助我。

【问题讨论】:

在你的情况下你必须使用protocol 我不知道为什么人们标记为负面。请不要那样做。 当问题实际上显示了一些研究工作,或者一般坚持the standards required for questions时,人们不会标记否定。 【参考方案1】:

您应该使用delegate/ protocolNSNotificationCenter。您不能使用 UILocalnotification 它用于不同的目的。

UILocalNotification 的实例表示应用程序可以安排在特定日期和时间向其用户呈现的通知。操作系统负责在适当的时间传递通知

这意味着 UILocalNotification 用于通知用户您的应用程序而不是您的自定义类对象。如果应用程序在后台,它将显示为警报。

如果您只想在某些更改时收到通知,请使用NSNotificationCenter。它将解决您的问题,无需在这里委托。 这里是教程NSNotificationCenter Tutorial

【讨论】:

你能解释一下 UILocalnotification 是为了什么目的吗?【参考方案2】:

Delegation 表示调用另一个对象来执行特定任务, 就像您的朋友要购买 2 张电影票一样 - 您可以决定去哪里、看哪个节目、看什么电影、邀请更多朋友。就像您打电话给您的朋友并说些什么,并得到您朋友的回应,直到您挂断打个电话

Notification 仅在任务执行后发生, 并且被通知的对象不能再改变事件了。 喜欢你的朋友 txt 你“我有两张电影票,你要不要来?”。通知就像广播电台,广播你的消息,你不知道谁在听。

这是我在某处读到的内容,是我在 SO 上发现的最大差异之一。

【讨论】:

【参考方案3】:

什么是 UILocalNotification?

UILocalNotifications 仅在应用未运行(或在后台运行)时自动显示。如果应用程序正在运行并且触发了本地通知,则 UIApplicationDelegate 的 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 方法被调用并且系统不显示任何内容(也不播放声音)。如果要显示通知,请在委托方法中自己创建一个 UIAlertView。

什么是委托?

我理解的委托是指一个对象将处理事件的责任传递给另一个对象,从而将责任“委托”给该对象。

例如,如果您在 iO 中有一个 NSButton,您通常会将 Delegate 分配为父视图控制器。这意味着不是在按钮定义中处理 touchUp 事件,而是在视图控制器中处理。

【讨论】:

感谢您的回复。但我想知道,只是两者之间的基本区别。如果应用在后台,两者都可以调用。【参考方案4】:

在您调用该方法的类上声明#import<Appdelegate.h> 文件。

如果您的方法是在 AppDelegate 中声明的,那么您必须像这样创建 AppDelegate 的共享实例

AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

并调用如下代码所需的方法。

[self delegate.getData]; // getdata 是函数在这里写你的函数。

希望对你有帮助。

【讨论】:

【参考方案5】:

如果你想如何从另一个类调用它,那么你应该去:-

Need to call methods in other viewControllers from another viewController

现在来UILocalNotification。它主要用于当我们不知道本地事件何时会触发时,以便我们可以执行当时您的编程所需的操作。当应用程序在后台时也会显示。

委托是预定义的通信,由编程处理或可能在运行时调用。因此,对于protocol(自定义委托)或委托,您应该事先知道哪个被调用并安排了它。

在您的情况下,您应该使用UILocalNotification,它是通知的一部分,除此之外,您还可以使用KVO .(Key Value observation)

【讨论】:

以上是关于UILocalnotification 和委托有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

限价委托和市价委托有啥 区别?如何 使用?

.NET Framework 中的 lambda 和委托有啥区别?

检查 UILocalNotification 弃用后是不是启用用户通知

C#多播委托和事件有啥区别

iOS10 (Swift 3.0) 中弃用 UILocalNotification 接收功能

C#里事件和委托有啥区别啊??