ViewControllerViewDidLoad
のデリゲート オブジェクトを初期化しましたが、再度ロードすると、値が再度初期化されます。
getObject
andを使用してアクセスしたいデリゲートオブジェクトに、ある種の配列を保存していますsetObject
。ViewDidLoad
デリゲート オブジェクトが呼び出されるたびに再初期化されないようにするにはどうすればよいですか?
ViewControllerViewDidLoad
のデリゲート オブジェクトを初期化しましたが、再度ロードすると、値が再度初期化されます。
getObject
andを使用してアクセスしたいデリゲートオブジェクトに、ある種の配列を保存していますsetObject
。ViewDidLoad
デリゲート オブジェクトが呼び出されるたびに再初期化されないようにするにはどうすればよいですか?
この戦略を検討しましたか:
ただし、この戦略を使用する場合は、特定のオブジェクトの値がアプリのライフ サイクルを通じて同じままである必要があることに注意する必要があります。それ以外の場合は機能しません。
物事が一度だけ行われる場所が必要な場合、それは通常、どこかのシングルトンにあります-一度作成され、どこからでも参照されるオブジェクトです。
AppDelegate は、無料で入手できるデフォルトのシングルトンです。しかし、しばらくして AppDelegate が多すぎると判断した場合は、カスタム データを入れる別の Singleton オブジェクトを作成することをお勧めします。
探している用語がわかったので、シングルトンの作成方法を示す多くの例があります。
viewDidLoad で UI 要素のみを初期化する必要があります。それ以外はすべてコンストラクターで初期化する必要があります (initWith...)
他の誰もが言っているように、おそらくシングルトン オブジェクトが必要です。これを行う最も簡単な方法は次のとおりです。
// 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]];