Почему мой IBOutlet выпущен под ARC?

Проблема

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

Что я хочу

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

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

У меня есть:

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

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

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

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

Код

KPAppDelegate.h

@interface KPAppDelegate : UIResponder <UIApplicationDelegate> { 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 

ОБНОВИТЬ

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

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

4 Solutions collect form web for “Почему мой IBOutlet выпущен под ARC?”

В Window nib установите класс FileOwner как UIApplication, а затем укажите его делегат из Outlets в объект AppDelegate. Это то, что неправильно в вашем примере проекта.

ваш выход из интерфейса Builder установлен как тип KPBrowseExpensesNavigationController ? Если нет, это не приведет к созданию соединения между вашим nib и ViewController.

Вы должны установить свой пользовательский класс как KPBrowseExpensesNavigationController в Identity Inspector

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

 @interface KPAppDelegate : UIResponder <UIApplicationDelegate> @property (nonatomic, strong) IBOutlet KPBrowseExpensesNavigationController *nc; 

И в вашей реализации:

 @implementation KPAppDelegate @synthesize nc = _nc; // So you don't accidentally use nc ...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 = [[**self.nc** viewControllers] objectAtIndex:0]; [[tvc tableView] reloadData]; } @end 

Надеюсь это поможет!

Я не видел, где вы назначаете свой контроллер nav. Просто объявление свойства не будет присваивать ему какое-либо значение, поэтому оно будет равно нулю. В вас -didFinishLaunchingWithOptions в -didFinishLaunchingWithOptions приложения установите оператор alloc / init. Все остальное выглядит хорошо.

 KPBrowseExpensesNavigationController *nc = [[KPBrowseExpensesNavigationController alloc] init]; 

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

  • Получить имя пользователя WPA2 Enterprise в iOS
  • Элегантный способ пропускать пустые закрытия в Swift
  • Коснитесь событий в фоновом режиме UITableView
  • Проблема с клавиатурой iOS SDK для iOS
  • Можно ли программно ослабить свет вспышки камеры iPhone?
  • Размер вида уменьшается после скрытия панели вкладок
  • Почему пустая реализация drawRect: отрицательно скажется на производительности во время анимации
  • Присоединение документов iWork из iCloud Document Picker не работает, потому что они не являются файлами каталогов
  • Swift, если позволяет успешно оценивать значение по умолчанию (nil)
  • Что делает iCloud во время начальной синхронизации?
  • wait_fences: не удалось получить ответ: 10004003?
  • Interesting Posts

    Обзор приложения iOS – потоковое видео MPEG-DASH более 10 минут

    Как настроить ширину UITextView в соответствии с ее содержимым без упаковки?

    Мониторинг состояния подключения и обработки капель

    Тестирование приложения iOS в устройствах с дисплеем не сетчатки и с отображением сетчатки

    приложение сбой при назначении себя __weak в ARC?

    Загрузите приложение, используя старую версию Xcode. Будет ли приложение доступно на устройствах iOS 10?

    Swift addubview и удалите его

    iOS 9 Xcode 7 – приложение появляется с черными полосами сверху и снизу

    Соединение с плейлистом / аудиофайлом из браузера не работает

    Временные метки времени / DST с помощью NSDate

    XCode UI Testing swizzle API класс методы

    IBInspectable и протоколы

    Может ли AFNetworking обрабатывать очередь запросов?

    UITextField не получает ввод с клавиатуры

    У UILocalNotifications сохраняются после удаления / обновления?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.