我有一个应用程序,其中包含嵌套在UITabBarController中的UITableView,并且我有一个方法,在从UIActionSheetDelegate方法clickedButtonAtIndex:调用它时会给我一个EXC_BAD_ACCESS。
这个方法有时会出现问题,它被称为updateTaskArray。基本上,它执行一个Core Data提取,配置一个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];
我在思考这是否意味着解除操作表才是问题所在...但是如果我不从委托中调用updateTaskArray,它不会产生任何错误...
我不太确定下一步该怎么做,因为[UITabBarButton setAlpha:]不是我自己调用的方法,而且错误似乎发生在我已经运行的代码之后-有什么建议可以解决这个问题吗?
tabBarController
进行了retain
或release
(如果有)。如果在你的.xib
文件中加载.xib
时没有对它进行retain
,你应该这样做 - 比如,在加载.xib
的对象中使用@property (retain)
来为其视图加载.xib
。 - user244343@property (nonatomic, retain) UITabBarController *tabBarController;
,我从未对其调用释放方法。与之相关的didFinishLaunching代码如下:self.tabBarController = [[UITabBarController alloc ] init]; self.tabBarController.viewControllers = [NSArray arrayWithObjects:nc1, nc2, nil];
- Ascendant