Я хочу иметь один объект, который инициализируется в делегате, и я хочу иметь возможность использовать этот объект в любом месте через контроллеры представления (не зависит от того, в каком представлении я сейчас нахожусь).Я предполагаю, что решение этой проблемы будет иметь одноэлементный класс, пока у меня есть следующее:
@interface LocationManager : NSObject <CLLocationManagerDelegate>{
NSDate *enter;
NSDate *exit;
CLLocationManager * manager;
}
@property (nonatomic, retain) NSDate * enter;
@property (nonatomic, retain) NSDate * exit;
- (BOOL)registerRegionWithLatitude:(double)latitude andLongitude:(double)longitude;
+ (LocationManager *)instance;
@end
#import "LocationManager.h"
@implementation LocationManager
@synthesize enter;
@synthesize exit;
#pragma mark - CLLocationManager delegate
static LocationManager *gInstance = NULL;
+ (LocationManager *)instance
{
@synchronized(self)
{
if (gInstance == NULL)
gInstance = [[self alloc] init];
}
return(gInstance);
}
@end
Это правильно?Так что все, что мне нужно сделать, чтобы получить доступ к этому, это просто вызвать экземпляр?Внутри LocationManager я также хочу иметь только один CLLocationManager, называемый manager. Однако, где я могу его инициализировать, чтобы у меня был только один?Могу ли я сделать следующее?В большинстве других одноэлементных примеров нет переменных в классе, поэтому я запутался
+ (LocationManager *)sharedLocationManager
{
@synchronized(self)
{
if (lm == NULL){
lm = [[self alloc] init];
lm.manager = [[CLLocationManager alloc] init];
lm.manager.delegate = lm;
}
}
return(lm);
}