Почему мой IBOutlet выпускается под ARC?

Проблема

IBOutlet выпускается до того, как у меня появляется возможность его использовать.

Чего я хочу

Я хочу получить доступ к навигационному контроллеру из своего делегата приложения, чтобы перезагрузить табличное представление.

Мои настройки

у меня:

  • Main.xib, установленный в качестве основного интерфейса в целевых настройках
  • . IBOutlet для навигационного контроллера в виде ivar делегата моего приложения
  • Этот IBOutlet подключен к правильному навигационному контроллеру в Main.xib
  • . Делегат приложения создан в xib, но не установлен в качестве владельца файла

Я использую ARC, Xcode 4.3.2 и iOS5.1

Что я пробовал

  • Изменение цели развертывания
  • Ставим точку останова на деаллок для навигационного контроллера, делегат приложения -, который никогда не вызывается
  • Читая все, что я могу найти в ARC и IBOutlets -, ничто не противоречит тому, что я делаю
  • Создание нового проекта с минимально необходимыми классами -Я вижу точно такую ​​же проблему

Код

KPAppDelegate.h

@interface KPAppDelegate : UIResponder  {
    IBOutlet  KPBrowseExpensesNavigationController *nc;
}

@property (strong) IBOutlet KPBrowseExpensesNavigationController *nc;

KPAppDelegate.m

@implementation KPAppDelegate

@synthesize nc;

-(void)setNc:(KPBrowseExpensesNavigationController *)nc_ {
    nc = nc_; // This gets called on view load and nc gets set.
}

...snip...

// This is called about 5 seconds after app startup
-(void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects {
        // By the time we get here, nc is nil.
        UITableViewController *tvc = [[nc viewControllers] objectAtIndex:0];
        [[tvc tableView] reloadData];
}

@end

ОБНОВЛЕНИЕ

Я , должно быть, делаю здесь что-то очень глупое. Даже невероятно простой проект все еще показывает эту проблему. См. ссылку ниже.

Загрузите простой тестовый проект, демонстрирующий проблему.

6
задан John Gallagher 19 June 2012 в 13:39
поделиться