2012-10-05 8 views
5

Zacząłem pracować nad widokiem z plikiem NIB i zdecydowałem usunąć go z mojego projektu, aby go skompilować programowo. W żadnym z moich kodów nie ma wzmianki o domniemanym wywołaniu pliku NIB, a plik .XIB nie istnieje w żadnym katalogu aplikacji. Oto dokładny błąd wyrzucony na mnie z konsoli debugowania.XCode próbuje załadować plik NIB, który usunąłem z projektu

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:  
'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "GESplitMainViewController" 
nib but the view outlet was not set.' 

Nie mogę zrozumieć, dlaczego xcode wciąż próbuje załadować NIB.

+0

jaki jest twój kod w initWithNibName: bundle:? – Pfitz

+0

Prawdopodobnie mówisz, żeby załadował plik Xib w kodzie, z storyboardu lub czegoś w tym stylu. Pokaż nam swój kod lub spróbuj przeszukać projekt pod kątem nazwy NIB. –

+0

Nie wspominam o pliku NIB w dowolnym miejscu kodu. –

Odpowiedz

11

Po pierwsze, domyślna implementation z initWithNibName:bundle wyszukiwania tobołek na stalówki o tej samej nazwie, co klasa kontrolera widoku, jeśli jako pierwszy parametr zostanie przekazany parametr zero, dlatego aplikacja próbuje je załadować.

To, że go znajduje, prawdopodobnie wynika z tego, że plik .xib, który był używany w projekcie, jest nadal uwzględniony w pakiecie, w którym działa symulator. Xcode ma zwyczaj zostawiać usunięte zasoby w pakiecie symulatora, nawet jeśli usuniesz je z projektu.

Jeśli usuniesz aplikację z symulatora, oczyść projekt Xcode i uruchom ponownie, powinien przestać próbować załadować stalówkę.

Chociaż to jest powód, dla którego aplikacja ładuje się z końcówki, nie jest przyczyną awarii. Przyczyną awarii jest to, że stary .xib, którego używałeś, nie miał widoku podłączonego do widoku widoku kontrolera widoku.

+1

Dzięki za cenne informacje :) –

+1

Widzę również to zachowanie, a kompilacja działa w symulatorze, ale co zrobić, gdy kompilacja jest na wolności? Po prostu aktualizacja wydaje się nie usuwać nieistniejącego już Xib z telefonu, mimo że już nie istnieje w pakiecie. Czy istnieje sposób, aby to oczyścić? Czy muszę żyć na zawsze z jego ciągłym istnieniem? Na pewno nie chcę informować moich użytkowników, że muszą odinstalować i ponownie zainstalować, aby pomyślnie przeprowadzić aktualizację. –

0

Jeśli nie zostały wykorzystane w dowolnym miejscu stalówka nazwę aplikacji, należy najpierw usunąć aplikację, oczyścić zbudować i przetestować go, nadzieję, że to rozwiązuje problem ..

Powiązane problemy