Не совсем уверен в ходе вашей программы, но я предполагаю, что вы показываете rootViewController при запуске программы, а позже вы получите удаленное уведомление.
В вашем коде (в didReceiveRemoteNotification
) вы создаете экземпляр нового rootViewController, и этот новый будет отличаться от того, который уже есть на экране. Следуя вашему подходу, вы можете захотеть выделить контроллер один раз и оставить его на потом, когда придет удаленное уведомление.
Лично я бы предложил использовать локальные уведомления и запустить локальное уведомление в didReceiveRemoteNotification
и перехватить его в rootViewController. Это обеспечит ответ текущего активного экземпляра контроллера.
Также не уверен, почему прядильщик не показывает, для попытки позвоните из viewDidAppear
, просто он видит, что он работает вообще, и если проблема в реакции на удаленное уведомление. И использовать несколько точек останова.
Отредактируйте с учетом вашего комментария:
в интерфейсе определения
RootViewController *controller
В реализации вы выделяете контроллер (например, appDidFininshLaunching
)
if (controller == nil) controller = [[RootViewController alloc] init]
в didReceiveRemoteNotification
затем вы можете сделать
[controller newFeedItem];
без выделения его снова, и вы можете обратиться к тому же контроллеру. Не забудьте выпустить его в -(void)dealloc