我已经将我正在编写的应用程序转换为ios 5,然后使用内置工具将其转换为使用自动引用计数。 ios 5没有问题,但是在ARC转换之后,我的大多数代表呼叫似乎都没有工作。例如,我有一个UITableViewController的子类,其.h文件看起来像:
@interface UITableVCSubclass : UITableViewController <UITableViewDelegate, ... >
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
...
@end
表视图委托方法tableView:didSelectRowAtIndexPath:当我选择表的一行时,不再调用它。如果选中self.tableview.delegate == self,那就是它。有什么想法为什么停止工作?
答案 0 :(得分:1)
我有同样的问题,找不到好的参考,所以希望这会对别人有所帮助。运行ARC重构doohickey后,我的工作项目无效。我的UITableView的视图控制器正在动态创建并推送而不保存引用,这不是转换过程所寻找的。
当它退出范围时,ARC正在释放vc,因此视图可见,但其代表已经消失。为了修复它,我向super添加了一个强大的属性来保存对新视图控制器的引用,然后我又开始接收事件。
改变了这一点:
MyViewController *myViewController =
[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
使用新属性:
self.myViewController =
[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];