我有两个对象DNLocation
s,其中包含其他位置的数组。我试图了解的想法是,您可以从一个位置转到另一个位置,然后返回到前一个位置。不幸的是,当我创建这样的位置时,他们不断创建彼此,导致无限循环。我不知道该怎么做。我看过循环引用,但这似乎是别的。
+ (DNLocation *) aCell {
static dispatch_once_t onceToken;
static DNLocation *instance = nil;
dispatch_once(&onceToken, ^{
instance = [DNLocation locationWithName:@"A Cell" andActions:[NSArray arrayWithObjects: [DNAction doNothingAction], nil] andLocations:[NSArray arrayWithObjects:[DNLocation aWhiteRoom], nil]];
});
return instance;
}
+ (DNLocation *) aWhiteRoom {
static dispatch_once_t onceToken;
static DNLocation *instance = nil;
dispatch_once(&onceToken, ^{
instance = [DNLocation locationWithName:@"A White Room" andActions:nil andLocations:[NSArray arrayWithObjects:[DNLocation aCell], nil]];
});
[instance setColor:[UIColor DNWhiteColor]];
[instance setFontColor:[UIColor DNBlackColor]];
return instance;
}
+ (DNLocation *) locationWithName:(NSString *) name {
return [[DNLocation alloc] initWithName:name];
}
在加载应用程序时调用这些方法,设置要去的所有可能位置。
我宁愿不必实例化它们然后将位置添加到自己,但如果这是唯一的方式,那么我就会这样做。