【问题标题】:- (void)applicationDidEnterBackground:(UIApplication *)application- (void)applicationDidEnterBackground:(UIApplication *)application
【发布时间】:2010-10-25 19:21:09
【问题描述】:

我可以在 AppDelegate 以外的地方使用下面的方法吗?如果可以,如何?

- (void)applicationDidEnterBackground:(UIApplication *)application

【问题讨论】:

    标签: ios iphone xcode


    【解决方案1】:

    不,但您可以让其他对象注册UIApplicationDidEnterBackgroundNotification 通知。然后这些对象将在调用applicationDidEnterBackground: 的同时得到通知。

    【讨论】:

    • 这个答案似乎更可取,因为您没有发布多余的通知。
    【解决方案2】:

    这是UIApplicationDelegate协议的一个方法,只能由符合它的类来实现。

    您可以使用NSNotificationCenter 对象从您的应用委托中为您的应用中的其他对象设置通知:

    - (void)applicationDidEnterBackground:(UIApplication *)application {
       [[NSNotificationCenter defaultCenter] postNotificationName:@"didEnterBackground" object:self];
    }
    

    您还可以收听UIApplicationDidEnterBackgroundNotification 通知,而不是执行上述操作。

    像这样注册你想要监听通知的对象:

    [[NSNotificationCenter defaultCenter] addObserver:someObject selector:@selector(someMethod:) name:@"UIApplicationDidEnterBackgroundNotification" object:nil];
    

    【讨论】:

    • 你能举个例子说明这段代码放在哪里,以及如何调用它?换句话说,这是保存整个视图,还是视图中的对象?
    • 不要使用第一个选项。并在第二个选项中使用适当的常量,而不是硬编码通知名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多