【问题标题】:Call ApplicationDidEnterBackground调用 ApplicationDidEnterBackground
【发布时间】:2015-01-29 15:22:36
【问题描述】:

我想调用 ApplicationDidEnterBackground。 我在 MainViewController.m 中使用此代码

- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_savedText];
    [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"savedText"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

但我认为它从未被调用过。我试图将内容放在应用程序委托中,但由于找不到“_savedText”而出现错误。我需要将“_savedText”导入到应用程序委托还是应该这样做?

【问题讨论】:

  • 有这个定义吗:MainViewController: UIViewController < UIApplicationDelegate >?
  • 在里面放一个断点,看看有没有被调用。
  • 现在我尝试在其中放置一个断点。它在 appDelegate 中调用,但在 MainViewController 中没有调用。定义如下所示: MainViewController : UITableViewController

标签: objective-c xcode save appdelegate shutdown


【解决方案1】:

-applicationDidEnterBackground: 是UIApplicationDelegate 协议的一部分。这是应用程序将发送给应用程序委托的消息。在其他类上实现同名的方法,在这种情况下是视图控制器,不会导致它被调用。

如果您需要视图控制器对进入后台的应用程序做出反应,您可以通过通知中心订阅UIApplicationDidEnterBackgroundNotification 通知。

但是,如果控制器需要了解此类应用程序范围的事件,那么我怀疑控制器需要对太多问题负责,您可能需要考虑如何简化它。

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2018-09-04
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    相关资源
    最近更新 更多