Эта строка кода дает сбой. Как проверить, не равен ли элемент табора нулю, а затем установить значок?
[self.tabController.tabBar.items objectAtIndex:0].badgeValue = [NSString stringWithFormat:@"%i", num];
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_CTNativeGlyphStorage tabBar]: unrecognized selector sent to instance 0x15029cfd0'
Я проверил это с помощью этой строчки кода, но это не решило проблему.
if (self.tabController.tabBar.items != nil) { }
зарегистрируйте значение self.tabController, посмотрите, является ли это фактическим контроллером панели вкладок или что-то еще.





Если вы устанавливаете значение значка до того, как контроллер вкладок будет представлен или полностью инициирован, то с индексом 0 еще ничего не будет. Контроллеру вкладок нет необходимости инициировать все до тех пор, пока не придет время для презентации, для целей использования памяти. Вы можете сохранить ссылку на каждый экземпляр UITabBarItem и установить для них значение значка. Или вам придется подождать, пока не будет вызван viewDidAppear, чтобы все UITabBarItem были полностью созданы ...
Я не могу предположить здесь что-либо еще, не увидев остальной части вашего кода.
используйте это условие - if (! (item == nil || item == (id) [NSNull null]))