2010-06-19 3 views
4

Я попытался сменить архитектуру в моем проекте Xcode сегодня, потому что я собирался использовать материал QuickTime низкого уровня, который еще не перенесен на 64-разрядный. Когда я скомпилировал ранее на x86_64, мое приложение работало нормально. Затем я переключил арку на i386 и бум, мое приложение продолжает сбой при запуске.Сбой приложений на i386, работает на x86_64

Странно, что трек-указатель стека не имеет ничего общего с моим собственным кодом.

#0 0x9929ebf1 in __CFBasicHashDeallocate 
#1 0x99286ea1 in _CFRelease 
#2 0x992b397d in _CFAutoreleasePoolPop 
#3 0x917d1dda in NSPopAutoreleasePool 
#4 0x92b67bc9 in loadNib 
#5 0x92b66f99 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] 
#6 0x92b66eaa in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] 
#7 0x92b66df5 in +[NSBundle(NSNibLoading) loadNibNamed:owner:] 
#8 0x92b63bf9 in NSApplicationMain 
#9 0x000023c8 in main at main.m:13 

Любые идеи?

+0

Возможно ли, что это сбой в другой теме? –

ответ

3

Я предполагаю, что вы создали объекты в наконечнике, которые небезопасны в 32-битном режиме. Например, вы можете делать предположения о размере какого-либо объекта, который не является истинным, например, используя двойной вместо CGFloat или int64_t вместо NSInteger.

+0

любые идеи, как сузить эту проблему? я попытался выполнить мой код с помощью отладчика, но никаких полезных результатов до сих пор ... не удалось найти точку, где он сбой. –

+1

Нашел! оператор * [update setTitle: @ "update available ➜"]; * разбился, потому что я использовал нестандартный символ (стрелка). –

+0

@eaigner Я бы, вероятно, написал ошибку с Apple. Кажется, что символ ➜ не должен крах загружать нить. Можете ли вы упростить это до меньшего тестового примера (т. Е. Просто ярлыка в окне или что-то еще)? Это работает, если вы 'setTitle:' в коде? –

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