Objective c 为什么要取消分配我的对象?

Objective c 为什么要取消分配我的对象?,objective-c,ios,automatic-ref-counting,Objective C,Ios,Automatic Ref Counting,我有一个视图控制器,存储在可变数组中 - (void)pushViewController:(KAViewController *)viewController { [self.viewControllers addObject:viewController]; if (self.count == 0) [self.view addSubview:viewController.view]; else [self transitionFr

我有一个视图控制器,存储在可变数组中

- (void)pushViewController:(KAViewController *)viewController
{
    [self.viewControllers addObject:viewController];

    if (self.count == 0)
        [self.view addSubview:viewController.view];
    else 
        [self transitionFromView:self.currentViewController.view toView:viewController.view];
}
阵列(视图控制器)定义为:

@property (nonatomic, retain) NSMutableArray *viewControllers;
视图中有一个按钮,当我单击它时,会收到以下消息:

[KAGameInfoViewController性能选择器:withObject:withObject:]: 已将消息发送到解除分配的实例0x6e6e900

我已确认0x6e6e900是我的视图控制器的地址

有什么想法吗

编辑


关闭ARC可以解决问题。

可能是
self.viewControllers
为零,因为您忘记执行以下操作:

self.viewControllers = [[NSMutableArray alloc] init]; 

任何地方。

可能
self.viewControllers
为零,因为您忘记执行以下操作:

self.viewControllers = [[NSMutableArray alloc] init]; 

任何地方。

self.count的属性是什么?我假设所有这些代码都是您的
KAGameInfoViewController
类的一部分。它是否有一个名为
count
的ivar?如果不是,则
If(self.count==0)
可能是一个问题。关闭ARC可能不是一个好的解决方案,因为它可能会用您的代码掩盖分配问题。@adamjansch同意。我刚刚关闭了if,以查看它是否导致了问题。self.count只返回viewcontroller的计数。self.count的
self.count
属性是什么?我假设所有这些代码都是您的
KAGameInfoViewController
类的一部分。它是否有一个名为
count
的ivar?如果不是,则
If(self.count==0)
可能是一个问题。关闭ARC可能不是一个好的解决方案,因为它可能会用您的代码掩盖分配问题。@adamjansch同意。我刚刚关闭了if,以查看它是否导致了问题。self.count只返回viewControllers的计数。哈哈哈,我请求暂时缺乏情报:/哈哈哈,我请求暂时缺乏情报:/