我在iPhone上开发,并且在存储对象到NSMutableArray上遇到了问题,我做错了什么?应该如何解决?
相关代码段:
我定义了一个继承自NSObject的对象Entity。在GLView类中,我希望定义一个这些对象的数组 - 所以在GLView.h中。
@interface GLView : UIView
{
BOOL controllerSetup;
// Entity etc - first development task it to get one up
NSMutableArray *arrEntities;
}
@property(nonatomic, assign) NSMutableArray *arrEntities;
在drawView函数的主体中,该函数被定时器事件多次调用。我会分配数组,并添加一个实体对象到数组中,这是初步开发的过程。
- (void)drawView
{
if(!controllerSetup) { // initialize on first call
[controller setupView:self];
controllerSetup = YES;
arrEntities = [NSMutableArray array];
Entity* thisEntity = [[Entity alloc] initEntity];
[arrEntities addObject:thisEntity];
}
Entity *entity = [arrEntities objectAtIndex:0];
[entity tickEntity:0.1];
}
我的理解是,在第一次调用
drawView
时,NSMutableArray 将被设置并添加一个 Entity 实例,然后在方法体中从数组中检索存储的第一个实体的指针进行操作(显然我打算添加更多并稍后循环执行)。然而,在过程的第一次调用中,一切正常运行,
objectAtIndex
检索实体指针并且所有工作正常。但是,在第二次调用时,当 controllerSetup
为 true 并且初始化语句未被执行时,arrEntities
为空,并且程序会崩溃,因为 objectAtIndex
检索到 nil。所以,我做错了什么?为什么我的存储的 Entity 对象无法持久存在 NSMutableArray 中?