2011-10-19 37 views
0

我已将转换为正在写入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

你能提供你的实现(如果有的话):** - (NSIndexPath *) tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath; ** –

+0

最初没有willSelectRowAtIndexPath:方法。我添加了以下内容,看看它是否会被调用: ' - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@“willSelectRowAtIndexPath called”); return nil; }' 。 。 。它没有被调用。 – Alec

+0

** tableView.delegate => self **连接是以编程方式或在Interface Builder中定义的? –

回答

1

我有同样的问题,找不到一个很好的参考,所以希望这会帮助别人。运行ARC重构doohickey后,我的工作项目无法工作。用于我的UITableView的视图控制器正在即时创建,并且在不保存引用的情况下进行推送,这不是转换过程所要查找的内容。

ARC在超出范围时释放了vc,因此视图可见,但其代表已经消失。为了解决这个问题,我向超级用户添加了一个强大的属性,以保存对新视图控制器的引用,然后我又开始接收事件。

从此改变:

MyViewController *myViewController = 
    [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 

要使用新属性:该方法的UITableViewDelegate的

self.myViewController = 
    [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];