我在UITableView
内有UITabBarController
。
当我打电话时
[[self navigationController] pushViewController:myViewController animated:YES];
没有问题。
但是,当我从UIActionSheetDelegate
内部调用同一行时,例如:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
我得到EXC_BAD_ACCESS
。
似乎从另一个线程调用此行导致此问题。
如何阻止此EXC_BAD_ACCESS
问题?
(注意myViewController不是nil,或类似的东西)
谢谢!
答案 0 :(得分:4)
EXC_BAD_ACCESS
,并且在操作表被取消后在主线程上调用actionSheet:clickedButtonAtIndex:
,所以我猜测{{1}指向的是什么发布了。
事实上,它不一定是myViewController
,这就是问题所在。指向的对象被释放,但指针不是nil
。
答案 1 :(得分:1)
我只是遇到了同样的问题,而我的意思是当我分配它时,我并没有将自己的成员变为自我。
这导致了一个问题:( myTestViewController是类成员)
TestViewController* test = [[TestViewController alloc] init];
myTestViewController = testViewController;
[testViewController release];
[[self navigationController] pushViewController:myTestViewController animated:YES];
但是当我改变并用自己的方式帮助班级成员时,它起作用了。
TestViewController* test = [[TestViewController alloc] init];
self.myTestViewController = testViewController;
[testViewController release];
[[self navigationController] pushViewController:myTestViewController animated:YES];
答案 2 :(得分:1)
我有类似的问题。我修复它的方法是从推送的视图控制器中删除self.navigationController.delegate = self;
。
答案 3 :(得分:0)
TNX。
从名为:MainRootViewController
的类中调用UIActionSheetmyViewController是此类中的一个成员(MainRootViewController)。
完整的代码是:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
myViewController = [[myViewController alloc] init];
[[self navigationController] pushViewController:myViewController animated:YES];
}