发生两个互相创建的对象,无限循环

时间:2014-08-08 03:32:57

标签: objective-c circular-reference

我有两个对象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];
}

在加载应用程序时调用这些方法,设置要去的所有可能位置。

我宁愿不必实例化它们然后将位置添加到自己,但如果这是唯一的方式,那么我就会这样做。

0 个答案:

没有答案