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的计数。哈哈哈,我请求暂时缺乏情报:/哈哈哈,我请求暂时缺乏情报:/