我有一个单例,它有一个名为 duration 的属性字符串并且是合成的。
MySingleton.h
@property(nonatomic, strong)NSString *duration
MySingleton.m
@synthesize duration;
+ (id)sharedManager {
static MySingleton *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (id)init {
if (self = [super init]) {
duration = @"Default Property Value";
}
return self;
}
我在上面设置了字符串初始值。这一切都很好。现在从下面的另一个viewController view1我有一个方法,我想在其中将Singleton中的持续时间字符串更新为另一个值,如下所示它正确执行
- (void)updateString
{
MySingleton *singleton = [MySingleton sharedManager];
singleton.duration = @"abc";
}
现在从第二个角度来看,如果我调用 [sharedManager duration]; 它得到的初始设置值不是我从 view1 设置的那个应该说@“abc”;在我调用的第二个视图的 viewDidLoad
sharedManager = [[MySingleton alloc]init];
NSLog (@"The duration??? = %@", [sharedManager duration]);