我想要在委托中初始化一个对象,我希望能够在视图控制器的任何位置使用此对象(不依赖于我当前的视图)。我猜的解决方案,这将是有一个单独的类,到目前为止,我有以下几点:singleton class in objective-C
@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中我也想只有一个叫做manager的CLLocationManager ..但是,我在哪里初始化它,所以我只有一个?我可以做以下吗?大多数其他单例的例子没有任何类的变量,所以这就是我困惑的地方
+ (LocationManager *)sharedLocationManager
{
@synchronized(self)
{
if (lm == NULL){
lm = [[self alloc] init];
lm.manager = [[CLLocationManager alloc] init];
lm.manager.delegate = lm;
}
}
return(lm);
}
谷歌搜索“目标c单”揭示了许多数千次点击。 – 2011-03-25 22:14:53
我将其命名为'sharedLocationManager'而不是'instance'。 Apple以这种方式命名它们(除了'NSNull'和'NSUserDefaults',但这些都是特殊的)。 – 2011-03-25 22:16:08