我有一个名为MyManager的单例类,它拥有多个属性。其中一个属性是我创建的自定义类,它继承自NSObject并且还包含多个属性。
我的一个ViewControllers更改了MyManager类中的一个属性,但由于某种原因,它还更改了一个属性(具有相同的名称),但在自定义对象中。
解释:
MyManager:
一旦我在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
请帮助我,非常感谢!