如何使用应用程序委托保存状态

Posted

技术标签:

【中文标题】如何使用应用程序委托保存状态【英文标题】:How to save states using an application delegate 【发布时间】:2010-02-02 02:17:48 【问题描述】:

我有一个基于对象属性显示一些图形的应用程序。我希望该对象的状态在下次启动应用程序时保持不变。我知道应用程序委托有一个我可以使用的“applicationwillterminate”函数,但问题是我不知道如何获取指向对象的指针。

我正在尝试使这个 iphone 应用程序遵循 MVC 原则,并且我有正确的视图和控制器。应用程序代表如何融入图片中,我该如何使用它们?我到处读到关于在“applicationWillTerminate”期间保存应用程序状态的建议,但没有具体的例子!

谁能指点我一些文献或帮我一把?

谢谢!

【问题讨论】:

【参考方案1】:

查看我对this question 的回复。如果您需要更多帮助,请告诉我。

【讨论】:

嘿大卫,谢谢你的回复。我确实有一个问题,我发现我的应用程序委托没有对我的对象的引用,并且我无法在我的委托代码中说出类似 appDelegate.myObject 的内容。对象在控制器文件中声明。应用程序委托是否应该“包含”控制器文件? 另一方面,我还尝试让控制器成为 UIApplicationDelegate 的委托,如“@interface Controller : NSObject ”。我假设如果我在这个控制器中实现 applicationWillTerminate 它会触发,但它没有:( 您的 AppDelegate 应该有一个 ivar,即您的 UIViewController。如果您为需要访问的对象设置了属性,您应该能够在委托中使用viewController.myObject 之类的内容来引用它们。要创建一个属性,在您的 .h 中,在接口下方,您需要类似 @property (nonatomic, retain) MyObjectType *myObject; 和在实现中的 .m 中:@synthesize myObject; 当您拥有它时,您应该没有问题。 所以要确定你在说什么,委托访问控制器的方式是在我的控制器代码中的某处执行“[[UIApplication sharedApplication] delegate],然后设置 myObject委托中的属性到 controller.myOjbect? 就像:我认为这是这样做的方法,但要确保我没有做出任何错误的假设或糟糕的设计。 不完全是,设置你的 UIViewController 拥有的 myObject。如果您需要在委托中访问它以进行保存,那么您可以使用 viewController.myObject

以上是关于如何使用应用程序委托保存状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sqlite 或 CoreData 中保存位置坐标,并在 swift 中进行重要的位置监控

如何通过应用程序委托使用托管对象上下文实例化还原的视图控制器?

应用程序委托中的全局变量未保存

如何保存我的 android 应用程序的状态?

如何保存应用程序状态并再次恢复它

如何使用 UserDefaults 保存已登录状态?