解雇UIActionSheet会产生EXC_BAD_ACCESS

时间:2011-08-08 09:26:24

标签: ios uitableview uiactionsheet

我有一个UITableView嵌套在UITabBarController中的应用程序,我有一个方法,当它从UIActionSheetDelegate方法调用时,它给我一个EXC_BAD_ACCESS clickedButtonAtIndex:

(有时)提出问题的方法称为updateTaskArray。基本上,它执行一个Core Data fetch来配置一个NSMutableArray“taskArray”,它是viewController的一个属性(tableView委托用来配置它的单元格),然后它的最后一行是

[self.tableView reloadData];

问题是,它在大多数情况下都能正常工作,但只有在从UIActionSheetDelegate调用它时才会出错。当我用NSZombieEnabled运行它时,它告诉我

*** -[UITabBarButton setAlpha:]: message sent to deallocated instance 0x5c2e760

使用断点,在UIActionView委托方法(以及其中的updateTaskArray)完成之后,它才会提供EXC_BAD_ACCESS。 UIActionSheet提供:

[actionSheet showFromTabBar:self.tabBarController.tabBar];

所以我想知道这是否意味着它正在解决导致问题的actionSheet ...但是如果我不从委托中调用updateTaskArray它就不会给出任何错误...

我不确定下一步会有什么好处,因为[UITabBarButton setAlpha:]不是我称之为“我自己”的方法,而且错误似乎发生在我实际上“编写”的代码之后已经开始 - 有关从哪里开始接近这个的建议吗?

2 个答案:

答案 0 :(得分:2)

我改变了

[actionSheet showFromTabBar:self.tabBarController.tabBar];

[actionSheet showFromToolbar:self.navigationController.toolbar];

它现在工作正常。 tabBarController是导航控制器的父级,我估计它不喜欢我走上一级。

答案 1 :(得分:0)

查看您的发布声明。你不应该发布UITabBarButton,或者可能是整个标签栏。回顾iOS的内存管理原理。