Objective c 可以将UILocalNotification子类化并更改默认值;“关闭”;按钮文本和方法?

Objective c 可以将UILocalNotification子类化并更改默认值;“关闭”;按钮文本和方法?,objective-c,overriding,subclass,uilocalnotification,Objective C,Overriding,Subclass,Uilocalnotification,正在搜索更改UILocalNotification的“关闭”按钮文本/功能的方法 我发现从另一个对象访问/调用文本/函数是不可能的,尽管子类化UILocalNotification应该允许实现方法覆盖。。。更不用说创建访问器来获取/设置“关闭”按钮文本字段了 你们怎么看?苹果会怎么做 有人试过吗 编辑:2011年12月21日下午12:01 我要问的问题涉及对oop的理解:后期/早期绑定、动态方法查找、声明类型与运行时类型字段和方法处理 UILocalNotification的子类化确实有效 UI

正在搜索更改UILocalNotification的“关闭”按钮文本/功能的方法

我发现从另一个对象访问/调用文本/函数是不可能的,尽管子类化UILocalNotification应该允许实现方法覆盖。。。更不用说创建访问器来获取/设置“关闭”按钮文本字段了

你们怎么看?苹果会怎么做

有人试过吗

编辑:2011年12月21日下午12:01

我要问的问题涉及对oop的理解:后期/早期绑定、动态方法查找、声明类型与运行时类型字段和方法处理

UILocalNotification的子类化确实有效

UILocalNotificationExampleSublass*示例=[UILocalNotificationExampleSublass init]

…而设备确实创建了一个对象,但是类型为
UILocalNotification
,而不是
UILocalNotificationExampleSublass

我希望深入了解UILocalNotification.m文件的方法


如果它没有自己的方法,那么哪个对象(请命名)会获取UILocalNotification的实例,使用其字段,并显示我们在屏幕上看到的对象(请命名)?

a
UILocalNotification
只是通知信息的存储。它不执行任何操作

此外,应用程序不会显示通知。另一个过程是这样的。因此,子类化
UILocalNotification
毫无用处

编辑12月22日17:53 UTC+1:

是的,您可以子类化
UILocalNotification
。但是,
UILocalNotification
是一个抽象类,没有实现它的任何属性。
alloc
方法被重写,因此它返回一个私有子类
UILocalNotification
的实例。这就是为什么不能实例化
UILocalNotificationExampleSubclass

但是仍然没有指向子类
UILocalNotification
,因为当您使用调度通知或立即使用呈现通知时,操作系统会复制通知

该副本存储在系统管理的另一个进程中,该进程使用自己的私有存储机制。
UILocalNotification
只是一组属性的存储,这些属性将被序列化并从应用程序发送到操作系统

现在,我们有另一个进程存储所有预定的本地通知,并等待发出通知。当这种情况发生时,该进程将检查您的应用程序是否在前台

  • 如果您的应用程序不在前台,那么另一个完全不受我们控制的进程将创建警报并显示通知。我们无法以任何方式自定义该警报,除非使用
    UILocalNotification
    类的属性

  • 如果应用程序位于前台,则通知将发送回将创建
    UILocalNotification
    新实例的应用程序。然后,
    ui应用程序
    共享实例将访问其
    委托
    属性,并检查该委托是否实现。如果它这样做了,您将收到通知,并且可以使用该通知执行任何您想要的操作。例如,您可以选择使用警报视图显示通知
可以按如下方式配置和显示警报视图:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIAlertView *alertView =
    [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Alert", nil)
                               message:NSLocalizedString(notification.alertBody, nil)
                              delegate:nil
                     cancelButtonTitle:nil
                     otherButtonTitles:NSLocalizedString(@"OK", nil), nil];
    [alertView show];
    [alertView release]; // unless your project uses Automatic Reference Counting
}

如果我说的是真的,我希望这个较长的回答能回答你的问题。

如果你说的是真的。。。您知道什么类使用
UILocalNotification
的实例来构造我们在屏幕上看到的警报吗?我希望你能告诉我一些知识。查找Apple公开的类引用之外的一些事实。如果您的应用程序位于前台,
UIApplication
的委托可以实现
application:didReceiveLocalNotification:
,并显示自定义警报视图。如果您的应用程序在后台(或未运行),系统将显示警报,您无法更改关闭按钮的名称。感谢您的快速响应,但它没有回答我的问题。