2011-10-19 35 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];