Вы можете сохранить первый экземпляр этого объекта в статической переменной и определить статический метод для доступа к нему.
static MyViewController *sharedInstance = nil;
@implementation MyViewController
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
{
... init code here ...
if (!sharedInstance) {
sharedInstance = self;
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder
{
... init code here ...
if (!sharedInstance) {
sharedInstance = self;
}
return self;
}
+ (MyViewController *)sharedInstance
{
if (!sharedInstance)
[[[self alloc] init] autorelease]; // will be retained inside the init method
return sharedInstance;
}
@end
Затем в любом месте вашего приложения вы можете получить доступ к этой переменной, используя:
[MyViewController sharedInsatnce];
Это не очень часто используемый шаблон, имеющий несколько недостатков (например, он никогда не будет освобожден. Поэтому убедитесь, что он не использует слишком много памяти), но несколько классов в UIKit / Foundation используют его (NSFileManager NSUserDefaults, NSBundle и т. Д.).