Obj-C 应用程序不会从一开始就加载

Posted

技术标签:

【中文标题】Obj-C 应用程序不会从一开始就加载【英文标题】:Obj-C app doesn't load from start 【发布时间】:2015-04-20 21:08:37 【问题描述】:

我构建了一个 ios 应用程序并在 -(void)viewDidLoad 中解析来自网络的数据,并在加载时显示它。但是通常当我打开我的应用程序时,它会显示旧数据(应用程序加载速度很快),我需要杀死它并再次打开它,然后它会解析数据并显示新数据。为什么会这样?

【问题讨论】:

您是在 iOS 模拟器还是在实际设备上测试您的应用? 实际设备,在模拟器中它每次从开始加载(很好),就像设备缓存应用程序一样 viewDidLoad 不会在每次视图出现时都被调用。 您是否检查过(使用NSLog)是否每次都从服务器拉取数据? 在模拟器上可以正常工作,但在设备上不行 【参考方案1】:

这种方式不起作用,因为viewDidLoad 在创建视图时只被调用一次。后台返回后,你的视图依然存在。

如果您想在应用从后台返回时重新加载数据,您需要在 UIApplicationDelegate 实现中覆盖 applicationDidBecomeActive:,或者您需要监听相应的通知:

- (void)viewDidLoad 

    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(applicationDidBecomeActive:) 
                                                 name:UIApplicationDidBecomeActiveNotification
                                               object:nil];


- (void)applicationDidBecomeActive:(NSNotification *)notification

    // reload your data here.

当您不再需要通知时,不要忘记将自己移除为观察者。

【讨论】:

这不是他想要的。 如果我们从字面上理解他“为什么这不起作用”的问题,是的,我想我忘了说“它不起作用,因为现在事情就是这样运作的。”相反,我告诉他如何完成他认为应该发生的事情。感谢您向我展示了我的错误方式。

以上是关于Obj-C 应用程序不会从一开始就加载的主要内容,如果未能解决你的问题,请参考以下文章

Tabgroup iOS 选项卡不会打开新视图,给出 Obj-C 错误

iAds 从一开始就以横向显示纵向

帮助 Wikibooks WikiDraw Obj-C 应用程序

Swift 的 Obj-c 代码 - NSDateFormatter [重复]

Obj-C - 数据重新加载后TableView滚动到底部?

Unity3D Speed Hack 检测