2009-08-18 2 views
1

Я добавил файл изображения (png) в свой проект. Скомпилировал мое приложение, и все это сработало. Теперь я удалил файл изображения, очистил цель сборки и скомпилировал снова. Все компилируется, но приложение не запускается. Все, что я вижу, это прыгающий значок на доке. Xcode говорит:Скомпилированное приложение Xcode не запускается после удаления файла

__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__ 

Может ли кто-нибудь мне помочь? Благодарю.

Вот что говорит отладчик (да, приложение называется «Мой компьютер НАГРУЗКИ ПИСЬМО»):

[Session started at 2009-08-18 15:06:27 +0200.] 
2009-08-18 15:06:27.792 My PC LOAD LETTER[1435:10b] An uncaught exception was raised 
2009-08-18 15:06:27.793 My PC LOAD LETTER[1435:10b] *** -[NSCFArray objectAtIndex:]: index (3) beyond bounds (2) 
2009-08-18 15:06:27.793 My PC LOAD LETTER[1435:10b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (3) beyond bounds (2)' 
2009-08-18 15:06:27.794 My PC LOAD LETTER[1435:10b] Stack: (
    2494636011, 
    2491268667, 
    2494635467, 
    2494635530, 
    2455154639, 
    2454620040, 
    2467614489, 
    2467616211, 
    8392, 
    2494695413, 
    2466250126, 
    2466209722, 
    2466208028, 
    2466207071, 
    2466206877, 
    2466206028 
) 

[Session started at 2009-08-18 15:06:27 +0200.] 
GNU gdb 6.3.50-20050815 (Apple version gdb-966) (Tue Mar 10 02:43:13 UTC 2009) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "i386-apple-darwin".sharedlibrary apply-load-rules all 
Attaching to process 1435. 
kill 

The Debugger Debugger is attaching to process 
[Session started at 2009-08-18 15:06:32 +0200.] 
2009-08-18 15:06:32.897 My PC LOAD LETTER[1446:10b] An uncaught exception was raised 
2009-08-18 15:06:32.898 My PC LOAD LETTER[1446:10b] *** -[NSCFArray objectAtIndex:]: index (3) beyond bounds (2) 
2009-08-18 15:06:32.898 My PC LOAD LETTER[1446:10b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (3) beyond bounds (2)' 
2009-08-18 15:06:32.899 My PC LOAD LETTER[1446:10b] Stack: (
    2494636011, 
    2491268667, 
    2494635467, 
    2494635530, 
    2455154639, 
    2454620040, 
    2467614489, 
    2467616211, 
    8392, 
    2494695413, 
    2466250126, 
    2466209722, 
    2466208028, 
    2466207071, 
    2466206877, 
    2466206028 
) 

[Session started at 2009-08-18 15:06:32 +0200.] 
GNU gdb 6.3.50-20050815 (Apple version gdb-966) (Tue Mar 10 02:43:13 UTC 2009) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "i386-apple-darwin".sharedlibrary apply-load-rules all 
Attaching to process 1446. 
(gdb) 

Я всегда были проблемы с выколотыми изображения/звука/и т.д. ... файлы. Также в Visual Studio.

Я использовал имя файла изображения как идентификатор для вкладки tabview, которая является выводом tabView UKPrefsPanel.

ответ

1

Если вы вернете PNG, он скомпилируется и запускается снова? Если нет, то очистка среды сборки будет очищена немного.


Ах, больше комментариев в Q, так что больше текста в этом ... А

"индекс (3) за границы (2)" предполагает, что есть проблема индекса. Вы где-то жестко указали это значение индекса? Или сохранили значение индекса в файле конфигурации? Я мог представить, что у вас есть, например, список файлов, сохраненный и удалив PNG, этот список становится на один элемент меньше, но индекс может не отражать это, поэтому он все еще относится к элементу 3, который больше не существует. Проверьте свой код в тех местах, где вы используете массивы, и убедитесь, что индекс всегда находится в пределах диапазона этого массива. Поднимите пользовательские исключения, когда он выходит за пределы допустимого диапазона, но не полагайтесь на код, чтобы проверить это самостоятельно. (Другими словами, примените защитное программирование.)

+0

Уже пробовал. Прошу прощения, но нет. – 2009-08-18 13:10:18

+0

Проблема в том, что я еще не набрал еще одну строку кода. Но я посмотрю на сгенерированный код Xcode. – 2009-08-18 13:17:50

+0

Да, вы правы, это был индекс в файле, создаваемом Xcode. – 2009-08-18 13:36:07

1

Убедитесь, что вы не ссылаетесь на файл в любом месте вашего кода (или Info.plist, если на то пошло).

+0

Нет, даже в файле xib – 2009-08-18 12:56:32

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