Методы делегата больше не вызываются после преобразования в автоматический подсчет ссылок - PullRequest
0 голосов
/ 19 октября 2011

Я преобразовал приложение, которое пишу, в 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, что он делает.Есть идеи, почему это перестало работать?

1 Ответ

1 голос
/ 06 февраля 2012

У меня была такая же проблема, и я не смог найти хорошую ссылку, так что, надеюсь, это поможет кому-то еще.Мой рабочий проект не работал после запуска рефакторинга ARC doohickey.Контроллер представления для моего UITableView создавался на лету и выдвигался без сохранения ссылки, а это не то, что ищет процесс преобразования.

ARC выпускал vc, когда он выходил из области видимости, поэтому представление было видно, но его делегат исчез.Чтобы исправить это, я добавил в супер сильное свойство для хранения ссылки на новый контроллер представления, а затем снова начал получать события.

Изменено с этого:

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

Для использованияновая недвижимость:

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