android – 在iOS中管理核心对象

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

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

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

解决方法:

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

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

第一个将在应用程序不在后台并且即将关闭时调用(请参阅Tommy的注释),后者如果它将进入后台.我建议每次应用程序进入后台时将数据序列化为永久存储,如果有变化的话.

稍后,您可以通过调用[[UIApplication sharedApplication]委托]并将结果转换为自定义子类来获取对自定义App Delegate的引用.我还建议不要将数据直接存储在App Delegate中,而是存放在委托有引用的模型对象中(它应该有助于使事情更清晰,并为您提供更多的灵活性).

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...