我已经在ViewControllerViewDidLoad
中初始化了一个委托对象,但是当我再次加载它时,它再次初始化了该值。
我在该委托对象中保存了某种数组,我想使用getObject
and访问它setObject
。我应该怎么做才能使委托对象不会在每次ViewDidLoad
调用时都重新初始化?
我已经在ViewControllerViewDidLoad
中初始化了一个委托对象,但是当我再次加载它时,它再次初始化了该值。
我在该委托对象中保存了某种数组,我想使用getObject
and访问它setObject
。我应该怎么做才能使委托对象不会在每次ViewDidLoad
调用时都重新初始化?
您是否考虑过这种策略:
但是,当您使用此策略时,您应该意识到特定对象的值应该在您的应用程序的整个生命周期中保持不变。否则它将无法正常工作。
您应该只在 viewDidLoad 中初始化 UI 元素。其他一切都应该在构造函数中初始化(initWith...)
如果你想要某个事情只做一次的地方,那通常是在某处的 Singleton 中——一个被制作一次并从所有地方引用的对象。
AppDelegate 是您免费获得的默认单例。但是,如果您在一段时间后决定 AppDelegate 中的内容过多,则最好制作不同的 Singleton 对象来放入自定义数据。
既然您知道要查找的术语,那么到处都有很多示例展示了如何制作 Singleton。
正如其他人所说,您可能需要一个单例对象。最简单的方法是这样的:
// interface
@interface MyViewController
{ ... }
+(DelegateType*) theDelegate;
...
@end
// implementation
@implementation MyViewController
+(DelegateType*) theDelegate
{
static DelegateType* theDelegate = nil;
if (theDelegate == nil)
{
theDelegate = [[DelegateType alloc] init];
}
return theDelegate;
}
@end
// To use it
[foo setDelegate: [MyViewController theDelegate]];