创建开放和闭合列表
接下来我们将使用2个NSMutableArray来跟踪保存我们的开放和闭合列表.
你可能奇怪为什么不用NSMutableSet代替.好吧,这里有2个原因:
- NSMutableSet不是有序的,但是我们想要列表按照F值来排序以便快速查找.
- NSMutableSet并不会调用我们在ShortestPathStep类中的isEqual方法去测试是否2个元素是相同的(但是我们需要它这么做).
让我们在CatSprite.h中添加这些数组的定义:
@interface CatSprite : CCSprite {
//...
@private
NSMutableArray *spOpenSteps;
NSMutableArray *spClosedSteps;
}
然后在CatSprite.m中做出如下修改:
// Add to top of file
// Private properties and methods
@interface CatSprite ()
@property (nonatomic, retain) NSMutableArray *spOpenSteps;
@property (nonatomic, retain) NSMutableArray *spClosedSteps;
@end
// Add after @implementation CatSprite
@synthesize spOpenSteps;
@synthesize spClosedSteps;
// Add inside initWithLayer
self.spOpenSteps = nil;
self.spClosedSteps = nil;
//Add dealloc method to CatSprite
- (void)dealloc
{
[spOpenSteps release]; spOpenSteps = nil;
[spClosedSteps release]; spClosedSteps = nil;
[super dealloc];
}
注意:由于原文写作时间比较早,其中一些实例变量声明的方式以及销毁时的处理现在已
经不需要了,你可以在阅读本系列博文中的代码时将这一条记在心中 ;) 猫猪注.