我有一个应用程序,我想在该应用程序中获得是否从其他类调用该方法的通知。所以,我有点困惑是使用UILocalnotification
还是使用创建委托方法protocol
。任何人请帮助我。
5 回答
您应该使用delegate/ protocol
或NSNotificationCenter
。您不能使用 UILocalnotification 它用于不同的目的。
UILocalNotification 的实例表示应用程序可以安排在特定日期和时间向其用户呈现的通知。操作系统负责在适当的时间传递通知
这意味着 UILocalNotification 用于通知用户您的应用程序而不是您的自定义类对象。如果应用程序在后台,它将显示为警报。
如果您只是想获得某些更改的通知,请使用NSNotificationCenter。它将解决您的问题,无需在这里委托。
这是教程
NSNotificationCenter 教程
Delegation
意味着调用另一个对象来执行特定任务,就像您的朋友要购买 2 张电影票 - 您可以说要去哪里,看哪个节目,看什么电影,邀请更多朋友。就像您打电话给您的朋友一样说点什么,并得到你朋友的回应,直到你挂断电话
Notification
仅在执行任务后发生,并且通知对象不能再更改事件。喜欢你的朋友 txt 你“我有 2 张电影票,你想来吗?”。通知就像电台一样,广播你的消息,你不知道谁在听。
这是我在某处读到的内容,这是我在 SO 上发现的最大区别之一。
如果您想如何从另一个班级调用它,那么您应该选择:-
需要从另一个viewController调用其他viewController中的方法
现在来UILocalNotification
。它主要用于当我们不知道何时会触发本地事件时,以便我们可以执行当时您的编程所需的动作。当应用程序在后台时,它也会显示。
委托是预定义的通信,它可以通过编程处理,也可以在运行时调用。因此,对于protocol
(自定义委托)或委托,您应该事先知道哪个被调用并安排了它。
在您的情况下,您应该使用UILocalNotification
which 是 Notification 的一部分,除此之外您还可以使用KVO
. (关键值观察)
声明#import<Appdelegate.h>
在哪个类上调用该方法的文件。
如果您的方法在 AppDelegate 中声明,那么您必须像这样创建 AppDelegate 的共享实例
AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
并调用如下代码所需的方法。
[self delegate.getData];
// getdata 是函数在这里写你的函数。
我希望这可以帮助你。
UILocalNotification 是什么?
UILocalNotifications
只有在应用程序未运行(或在后台运行)时才会自动显示。如果应用程序正在运行并且触发了本地通知,则会- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
调用 UIApplicationDelegate 的方法并且系统不会显示任何内容(也不会播放声音)。如果要显示通知,请在委托方法中自己创建一个 UIAlertView。
什么是代表?
据我了解,委托是指一个对象将处理事件的责任传递给另一个对象,从而将责任“委托”给该对象。
例如,如果您在 iO 中有一个 NSButton,您通常将 Delegate 分配为父视图控制器。这意味着不是在按钮定义中处理 touchUp 事件,而是在视图控制器中处理。