4

我的任务是在 iOS 上移植一个 Android 应用程序。不幸的是,我以前从未编写过 iOS 应用程序,所以我有一些基本问题。

在 Android 中,我们编写的应用程序维护了几个不同的核心对象,我们在扩展 android.app.Application 的类中经常使用这些对象。当我们需要访问这些对象时,我们会调用getApplication(); 在这个类中,我们存储了两个自定义对象的字典、一个 ArrayList 以及一些布尔值、整数和字符串。

谁能告诉我在 iOS 中执行此操作的正确方法?我研究了一个可以保存所有字典、数组列表和其他数据的单例类,但我读到这个单例将在应用程序运行的整个过程中存在于内存中。在 Android 中,Application 类有时会在一段时间不活动后被垃圾回收,所以我们不得不重新加载它。如果在 iOS 中,这个单例类在应用程序的整个生命周期中都存在于内存中,我是否应该担心使用过多的内存?我应该序列化这些对象并将它们存储在磁盘上,并在需要时重新创建它们吗?

4

1 回答 1

3

android.app.Application听起来类似于 iOS 的 App Delegate ( UIApplicationDelegate)。当应用程序的状态发生变化时,App Delegate 中的某些方法会被调用,请查看以下方法:

- (void)applicationWillTerminate:(UIApplication *)application;
- (void)applicationDidEnterBackground:(UIApplication *)application;

第一个将在应用程序不在后台并且即将关闭时调用(请参阅 Tommy 的评论),如果它进入后台,则将调用后者。如果有更改,我建议每次应用程序进入后台时将数据序列化到永久存储中。

稍后,您可以通过调用[[UIApplication sharedApplication] delegate]并将结果转换为自定义子类来获取对自定义 App Delegate 的引用。我还建议不要将数据直接存储在 App Delegate 中,而是存储在代表引用的模型对象中(它应该有助于让事情变得更简洁,并给你更多的灵活性)。

于 2012-10-15T21:09:15.660 回答