2013-09-19 4 views
0

У меня есть приложение, которое я изначально написал для iOS 6, но теперь я хочу, чтобы он работал на iOS 7. Я открыл проект в Xcode 5 и отредактировал некоторые вещи. Он работал нормально, за исключением сообщения об ошибке в строках Need a root view controller before launch (я не помню точной формулировки). Это показалось мне странным, поскольку был установлен rootViewController, и приложение все еще работало нормально. Я тогда отредактирован еще немного, и теперь я получаю следующее сообщение об ошибке, когда линия [self.window makeKeyAndVisible] называется:IOS 7 makeKeyAndVisible не работает

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 
*** First throw call stack: 
(
0 CoreFoundation      0x01f155e4 __exceptionPreprocess + 180 
1 libobjc.A.dylib      0x01b058b6 objc_exception_throw + 44 
2 CoreFoundation      0x01ec7c3c -[__NSArrayM insertObject:atIndex:] + 844 
3 CoreFoundation      0x01ec78e0 -[__NSArrayM addObject:] + 64 
4 Nobles        0x00003efd -[AppDelegate addReachabilityDisabledButton:] + 109 
5 Nobles        0x00014f4c -[FoodViewController viewDidLoad] + 188 
6 UIKit        0x0077e9a8 -[UIViewController loadViewIfRequired] + 696 
7 UIKit        0x0077ec44 -[UIViewController view] + 35 
8 Nobles        0x000129fa -[MenuViewController viewDidLoad] + 1322 
9 UIKit        0x0077e9a8 -[UIViewController loadViewIfRequired] + 696 
10 UIKit        0x0077ec44 -[UIViewController view] + 35 
11 UIKit        0x006a75ad -[UIWindow addRootViewControllerViewIfPossible] + 66 
12 UIKit        0x006a7947 -[UIWindow _setHidden:forced:] + 312 
13 UIKit        0x006a7bdd -[UIWindow _orderFrontWithoutMakingKey] + 49 
14 UIKit        0x006b244a -[UIWindow makeKeyAndVisible] + 65 
15 Nobles        0x000036b2 -[AppDelegate application:didFinishLaunchingWithOptions:] + 2642 
16 UIKit        0x00664f65 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309 
17 UIKit        0x006657a5 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536 
18 UIKit        0x00669fb8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824 
19 UIKit        0x0067e42c -[UIApplication handleEvent:withNewEvent:] + 3447 
20 UIKit        0x0067e999 -[UIApplication sendEvent:] + 85 
21 UIKit        0x0066bc35 _UIApplicationHandleEvent + 736 
22 GraphicsServices     0x034912eb _PurpleEventCallback + 776 
23 GraphicsServices     0x03490df6 PurpleEventCallback + 46 
24 CoreFoundation      0x01e90dd5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53 
25 CoreFoundation      0x01e90b0b __CFRunLoopDoSource1 + 523 
26 CoreFoundation      0x01ebb7ec __CFRunLoopRun + 2156 
27 CoreFoundation      0x01ebab33 CFRunLoopRunSpecific + 467 
28 CoreFoundation      0x01eba94b CFRunLoopRunInMode + 123 
29 UIKit        0x006696ed -[UIApplication _run] + 840 
30 UIKit        0x0066b94b UIApplicationMain + 1225 
31 Nobles        0x00002c2d main + 141 
32 libdyld.dylib      0x0317f725 start + 0 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Я проверил, если RootViewController был равен нулю перед вызовом этой линии, если, но его не было. Я не изменял AppDelegate до того, как эта ошибка началась.

Любые идеи?

Заранее спасибо.

+0

В Xcode ударил команду 7, чтобы открыть точку останова навигатора. В нижней части этого левого окна щелкните значок плюса. Нажмите «Добавить точку останова исключений ...» Перезапустите приложение и наблюдайте за трассировкой стека. Скопируйте трассировку стека (просто выберите все и нажмите команду c) и вставьте ее в вопрос выше. – Saltymule

+0

@Dan_Gabicoware Это удовлетворительно? – carloabelli

+0

При возникновении сомнений прочитайте эту ошибку. 'reason: '*** - [__ NSArrayM insertObject: atIndex:]: объект не может быть nil'. Это говорит вам совершенно ясно, что вы пытаетесь вставить объект nil в массив. Посмотрите на первый кадр в трассировке стека, который вы написали, и посмотрите, что же такое ноль. – Kevin

ответ

1

Похоже, проблема в - [AppDelegate addReachabilityDisabledButton:] Эта функция вызывается из - [FoodViewController viewDidLoad]. Я предполагаю, что кнопка передается в нуле. Проверьте xib для FoodViewController, чтобы убедиться, что розетка установлена. Новый формат для xibs иногда создает проблемы для меня, поэтому может потребоваться только открытие файла, проверка выхода и сохранение.

Если это не работает, установить точку останова [FoodViewController viewDidLoad] и попытаться проверить значение для объекта, который передается в.

+0

Я заметил, что класс по какой-то причине переименован, и xcode не выдал предупреждения. Благодарю. – carloabelli

Смежные вопросы