Singleton对象由于某种原因而被设置

时间:2015-03-14 21:37:06

标签: ios objective-c singleton key-value nsobject

我有一个名为MyManager的单例类,它拥有多个属性。其中一个属性是我创建的自定义类,它继承自NSObject并且还包含多个属性。

我的一个ViewControllers更改了MyManager类中的一个属性,但由于某种原因,它还更改了一个属性(具有相同的名称),但在自定义对象中。

解释:

MyManager:

  • 自定义对象
    • objectThatGetsSet(在自定义对象内)
  • objectThatGetsSet

一旦我在MyManager中设置了objectThatGetsSet,它也会在自定义对象中设置。 为什么会这样,我该如何避免呢?

这是MyManager头文件:

#import <Foundation/Foundation.h>
#import "myClass.h"

@interface MyManager : NSObject

@property (nonatomic, strong) NSDate *objectThatGetsSet;
@property (nonatmoc, strong) myClass *customObject;

+(id)sharedManager;

@end

这是实施文件:

#import "MyManager.h"

@implementation MyManager

@synthesize objectThatGetsSet, customObject;

#pragma mark Singleton Methods;

+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}

-(id)init {
if (self == [super init]) {
}
return self;
}

@end

这是自定义类头文件:

#import <Foundation/Foundation.h>

@interface myClass : NSObject

@property (nonatomic, strong) myClass objectThatGetsSet;

@end

执行文件:

#import "WorkLocationModel.h"

@implementation WorkLocationModel

-(id)init {
// Init self
self = [super init];
if (self)
{
    // Setup
}
return self;
}

- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:self.objectThatGetsSet forKey:@"objectThatGetsSet"];
}

-(instancetype)initWithCoder:(NSCoder *)coder {
self = [super init];
if (self)
self.objectThatGetsSet = [coder decodeObjectForKey:@"objectThatGetsSet"];
return self;
}

@end

请帮助我,非常感谢!

0 个答案:

没有答案