【问题标题】:Using two delegates使用两个委托
【发布时间】:2011-03-08 06:40:00
【问题描述】:

我是 iPhone 编程的新手。我想在 MyAppDelegate 中调用属于我的视图之一的函数。我想这样做是因为我在视图中找不到任何 ApplicationDidEnterBackground() 事件。 所以,基本上我想在应用程序最小化时调用视图的函数。我确实尝试过使用委托。但是我找不到如何使用两个代表,因为 MyAppDelegate 已经有一个。请帮忙。

【问题讨论】:

    标签: ios iphone background delegates notifications


    【解决方案1】:

    一般的设计模式是,如果您在一个事件中有多个相关方,请不要使用委托,而是使用通知。在这种情况下,您应该在要处理事件的每个类的 -init 方法中注册一个 UIApplicationDidEnterBackgroundNotification

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didEnterBackground)
                                                 name:UIApplicationDidEnterBackgroundNotification
                                               object:[UIApplication sharedApplication]];
    

    然后用您的代码编写一个-(void)didEnterBackground 方法。在您的 -dealloc 方法中,确保取消注册通知:

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIApplicationDidEnterBackgroundNotification
                                                  object:nil];
    

    另外,请注意此代码需要 iOS 4.x 或更高版本。如果你想保持 iOS 3 的兼容性,你必须先检查可用性:

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(applicationState)]) {
        // register UIApplicationDidEnterBackgroundNotification
    }
    

    【讨论】:

    • 非常感谢。它确实有帮助。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多