2015-02-10 4 views
0

У меня есть простое приложение в Swift/SpriteKit/MacOS, которое я использую для изучения Swift. В основном он обрабатывает текстовые файлы, которые я с удовольствием могу сказать, Swift очень хорош.Swift 1.2 BAD_EXEC_ACCESS при запуске

Я скачал 1.2 и побежал конвертер и он предложил одну строку кода, чтобы быть изменен:

NSApplicationMain(C_ARGC, C_ARGV) 

бы стать:

NSApplicationMain(Process.argc, Process.unsafeArgv) 

Теперь, когда я запустить приложение он падает с BAD_EXEC_ACCESS на этой строке. Стек не показывает ничего интересного; он, кажется, рушится очень рано.

я поставил точку останова на линии и POed входы:

["/Development/PAIS/DerivedData/PAIS/Build/Products/Debug/PAIS.app/Contents/MacOS/PAIS", "-NSDocumentRevisionsDebugMode", "YES"] 

Ничего из ряда вон там, кажется.

+0

Хорошо, поэтому мне удалось ловушку рано, и это какая-то проблема с памятью, она умирает, пытаясь сделать objc_release. Есть что-то вроде NSZombies для отслеживания этого? –

ответ

0

Хорошо, надеюсь, это сэкономит кому-то еще некоторое время. Проблема заключается в fullName.componentsSeparatedByString, в которой есть ошибка, которая освобождает строку на стороне Obj-C и вызывает двойной выпуск в следующем цикле GC. Вместо этого используйте split(striped!, { $0 == " "}, maxSplit: Int.max, allowEmptySlices: false), хотя это заметно медленнее.

0

Я обнаружил, что время от времени Xcode имеет тенденцию бросать шипение из-за данных, которые он кэширует. Попробуйте закрыть Xcode, удалив папку «DerivedData» и снова запустив Xcode. Затем он будет переиндексировать все и, надеюсь, это будет сортировать вашу проблему.

+0

Я вижу, где вы собираетесь с этим ... но, к сожалению, не повезло :-( –

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