我已经在我的 ViewController 的ViewDidLoad
中初始化了一个委托对象,但是当我再次加载它时,它再次初始化该值。
我在该委托对象中保存了某种类型的数组,我希望使用getObject
和setObject
来访问该对象。
我应该怎么做,以便每次调用ViewDidLoad
时都不会重新初始化委托对象?
答案 0 :(得分:1)
你有没有考虑过这个策略:
但是,当您使用此策略时,您应该知道特定对象的值应该在整个应用程序的生命周期中保持不变。否则它将无法工作。
答案 1 :(得分:0)
您应该只在viewDidLoad中初始化UI元素。其他所有内容都应该在构造函数中(initWith ...)
答案 2 :(得分:0)
如果你想某个地方只做一次事情,那通常是在某个地方的一个单身人士 - 一个被制作一次的对象,并从全身引用。
AppDelegate是您免费获得的默认单身人士。但是如果你在AppDelegate中经过一段时间的决定,那么制作不同的Singleton对象是一个好主意。
有很多例子都展示了如何制作单身人士,现在你知道你正在寻找的术语。
答案 3 :(得分:0)
正如其他人所说,你可能需要一个单身对象。最简单的方法是:
// 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]];