我正在嘗試使用單例概念來保留GPS信息,但我沒有看到問題在哪裏,我的變量顯示僅爲零。單例值仍然爲零
Singleton.h:
@interface Singleton : NSObject
@property (readwrite) NSString *propertyA;
@property (readwrite) NSString *propertyB;
@property (readwrite) NSString *propertyC;
+ (Singleton *)sharedInstance;
@end
Singleton.m:
#import "Singleton.h"
@interface Singleton()
{
NSString *variableA;
NSString *variableB;
NSString *variableC;
}
@end
@implementation Singleton
static Singleton *sharedInstance = nil;
+ (Singleton *)sharedInstance
{
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[Singleton alloc] init];
}
}
return sharedInstance;
}
+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [super allocWithZone:zone];
return sharedInstance;
}
}
return nil;
}
- (id)init
{
self = [super init];
if (self)
{
variableA = nil;
variableB = nil;
variableC = nil;
}
return self;
}
@end
在OverlayViewController.m:
#import "Singleton.h"
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
_longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
_latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
// Setting properties
NSString *variableA = _latitudeLabel.text;
[[Singleton sharedInstance] setPropertyA:variableA];
}
於是又記起值位進一步下跌...
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *variableA = [[Singleton sharedInstance] propertyA];
NSLog(@"Latitude = %.8f", variableA);
}
個
感謝紅塔
Xcode 4.4和更新的自動合成訪問器的屬性。 – Kreiri