Добавление (удобного) вычисляемого height
свойства UIView
в мой UIViewExtension.swift
файл приводит к сбою компилятора Swift ... Что здесь может быть не так?
0 swift 0x00000001061e5608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x00000001061e5af4 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff894da5aa _sigtramp + 26
3 libsystem_platform.dylib 0xb03939841e997c88 _sigtramp + 2504775416
4 swift 0x00000001064c8bb9 swift::NominalTypeDecl::getMembers(bool) const + 41
5 swift 0x00000001055efab9 swift::irgen::ClassMetadataLayout<(anonymous namespace)::FindClassMethodIndex>::addClassMembers(swift::ClassDecl*) + 329
6 swift 0x00000001055e97b2 swift::irgen::emitVirtualMethodValue(swift::irgen::IRGenFunction&, llvm::Value*, swift::SILType, swift::SILDeclRef, swift::CanTypeWrapper<swift::SILFunctionType>, swift::ResilienceExpansion) + 434
7 swift 0x00000001056550d3 swift::SILVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::ValueBase*) + 42611
8 swift 0x000000010564a266 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 8678
9 swift 0x00000001055cb6f8 swift::irgen::IRGenModule::emitGlobalTopLevel() + 184
10 swift 0x00000001056376e3 performIRGeneration(swift::IRGenOptions&, swift::Module*, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, unsigned int) + 1859
11 swift 0x0000000105638033 swift::performIRGeneration(swift::IRGenOptions&, swift::SourceFile&, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, unsigned int) + 51
12 swift 0x00000001055aa65a frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 4842
13 swift 0x00000001055a935d main + 1533
14 libdyld.dylib 0x00007fff8a82e5fd start + 1
1. While emitting IR SIL function @_TFCSo6UIViewg6heightSd for 'anonname=0x7ff422892fd0' at <path redacted>/UIViewExtension.swift:60:5
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
Если для взлома требуется дополнительная информация, просто прокомментируйте. Спасибо!
Редактировать:
Вот связанный .xcodeproj, который возвращает ошибку компилятора этого вопроса. Скачать здесь
Ответы:
У меня была эта ошибка, потому что я делал это:
вместо того
поэтому я думаю, что необязательный, не развернутый, если условие может вызвать эту ошибку
источник
Когда вы сталкиваетесь с ошибкой компилятора в Swift, вы не получаете удобный номер строки и сообщение об ошибке. Вот как можно отследить проблему:
SegFaultDebugger.swift
в вашем проекте.SegFaultDebugger.swift
.В этот момент происходит одно из трех:
SegFaultDebugger.swift
обратно в исходный файл и переместите в него другой набор методовSegFaultDebugger.swift
. ПовторениеSegFaultDebugger.swift
: Отлично! Теперь используйте двоичный поиск, чтобы привязать segfault к определенному методу, пока вы не сможете выяснить, какая конструкция вызывает его.источник
Я получил эту ошибку при расширении одного из моих протоколов и опечатки и необязательного аргумента типа.
Разница в аргументах функции
String
в прототипе иString?
в расширении вызвала ошибку сегментации 11 .источник
У меня тоже была эта ошибка, и я исправил ее так:
Проверьте свой проект и выясните, какие файлы используются дважды, и удалите один или удалите и снова добавьте их все.
Ошибки в моем Xcode:
источник
В Xcode 7 вы можете щелкнуть ошибку в навигаторе отладки, и вам будет показан расширенный вид сбоев. Щелчок по кнопке гамбургера справа раскрывает сообщение об ошибке, и если вы прокрутите его до конца раскрытого сообщения об ошибке, вы увидите, откуда оно взялось.
Для меня у меня было две из этих ошибок сегментации. На картинке выше первый - это то, как он выглядит в свернутом виде, а второй - когда вы раскрываете кнопку гамбургера. В самом низу развернутого серого поля вы увидите сообщение о том, где произошел сбой компилятора.
Однако обратите внимание, что сообщение об ошибке иногда может быть недостаточно информативным, поэтому, хотя оно сообщает вам, где произошел сбой, оно не всегда говорит, почему и как это исправить. Как избавиться от этой ошибки, все еще остается только догадываться.
источник
Я нашел простой обходной путь, пока проблема не будет исправлена в будущей сборке Xcode / Swift:
.swift
файл.В предоставленном вами примере проекта разместите содержимое
UIViewExtension.swift
иCALayerExtension.swift
вышеAppDelegate.swift
Надеюсь, это поможет нам написать рабочий код Swift, пока проблема не будет устранена.
источник
Как по мне, добавление
private
в static var фиксированного сбоя clang:источник
У меня была ошибка сегментации компилятора в таком заявлении:
Вместо этого я просто сделал оператор if-else, и он работает.
источник
У вас также может возникнуть эта проблема, если вы объявите условие с развернутым Bool в качестве свойства
источник
В моем случае неуместное двоеточие во время интерполяции строк сломало мой (XCode 6.1.1).
Пример:
когда я хотел сделать:
источник
Эта ошибка произошла со мной, когда я попытался переопределить слабую переменную из родительского класса.
В базовом классе:
Производный класс:
Ошибка исчезла, когда я удалил
=nil
из производного класса.источник
Сегодня я ловлю какое-то исключение
и это решило это:
Потому что тип "Any" - это событие любого типа "nil", "AnyObject", optional, ... :) Это не может быть необязательным, это уже необязательно.
источник
Эта ошибка возникает также, если вы случайно объявляете переменную, тип которой соответствует ее имени:
источник
Возникла эта ошибка из-за постороннего универсального типа в операторной функции, например
В моем случае удаление
<T>
решило проблему.источник
В моем случае я объявил
struct
внутри afunc
. Переход наstruct
уровень класса решил проблему.Теперь, когда я это пишу, я помню, что раньше у меня были проблемы с
struct
внутриfunc
s. Это было нечто иное, чем ошибка сегментации (которая, похоже, стала печально известной в бета-версии Swift 1.2). OMG Apple, что ты там делаешь?источник
В моем случае это ошибка, потому что я использую имя класса для переменной
И это решает мою проблему
источник
В моем случае это произошло, когда я выполнил неправильную статическую инициализацию в протоколе. Я нашел способ обойти, но компилятор никогда не должен вызывать ошибку сегментации при сборке.
Здесь задействованы три файла. Протокол NamedSegues.swift, настраиваемый TableViewController, который, среди прочего, реализует протокол, содержащий обратный вызов, настраиваемый TableViewCell, который содержит ссылку на этот протокол для вызова обратного вызова.
Я обошел это с помощью?
В файле протокола file1: удалите объявление getDefault () В файле CustomController2: удалите реализацию getDefault. В CustomCellView file3:
Компилятор должен был уловить это и выдать сообщение об ошибке вместо того, чтобы выдавать ошибку сегментации во время сборки!
источник
Похоже, компилятор Swift 2 еще не совсем готов к работе! В случае , если это помогает любому, я получаю ошибку сегментации: 11 из - за несоответствия с типом переменной в заголовке закрытия, в частности , в методе разбора
PFQuery.query.findObjectsInBackgroundWithBlock
.Вы можете увидеть проблему более подробно здесь: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/280
источник
Как сказал @Fjohn , это была проблема, связанная с разворачиванием необязательного для меня (сломано как в Xcode 7.0 beta 6, так и в Xcode 7). В моем случае я не разворачивал необязательный из необязательного (то, что меня предупредило, было двойным ?? в дескрипторе. Использование if let решило проблему
источник
Как писали другие выше, для меня это произошло, когда я использую расширение по протоколу, но сигнатуры методов в протоколе не соответствуют реализациям в расширении.
В моем случае я добавил в реализацию (в расширении) новый параметр, но забыл также добавить его в подпись метода в протоколе.
источник
в моем случае я попытался добавить параметр функции после параметра с переменным числом аргументов.
Изменение последовательности параметров на противоположное и установка вариативного параметра последним параметром в списке параметров исправили его.
источник
Обычно это происходит, когда компилятор не имеет достаточно информации (несмотря на то, что вы думаете), чтобы гарантировать / определить состояние оператора или переменной внутри оператора.
Например, представьте, что у вас есть словарь типа [String: String], который вы заполняете названиями городов в качестве ключей и списком соответствующих почтовых индексов / почтовых индексов, разделенных запятыми.
Представьте, что где-то в вашем коде вы хотите обновить список соответствующих кодов:
В этом случае компилятор ответит с ошибкой сегментации, которой
town
может не быть в словаре, и поэтому он не может гарантировать, что приведенный выше оператор будет иметь допустимое значение.Чтобы решить эту проблему, вы должны сохранить текущее состояние
myDict[town]
в отдельной переменной, что позволит вам обрабатывать случай,key not in dict
а затем обновить значение для данного ключа:К сожалению, не всегда просто определить основную причину, поэтому я надеюсь, что этот простой пример поможет.
источник
Swift 3.0 (Xcode 8.1) демонстрирует эту проблему, когда протокол объявляет необязательную переменную, а разработчик реализует эту переменную как ленивую инициализированную.
Об ошибке сообщается здесь: https://bugs.swift.org/browse/SR-1825.
источник
Xcode 8.2.
Добавление
@nonobjc
реализации протокола в расширение, вызывающее ошибки сегментации. Перенести@nonobjc
реализацию протокола в реализацию класса.источник
В моем случае виновником была случайная перегрузка функции, ожидающей аргумента массива, с аргументом с переменным аргументом:
Когда суперкласс определил его как массив:
источник
Для меня следующее вызвало segfault, хотя
type
это необязательно:и это решило это:
источник
Я получил эту ошибку со следующей подписью метода в пользовательском UITableViewController.
меняется на:
исправил проблему.
источник
У меня была такая же проблема с расширением. У моего расширения было два удобных инициализатора:
Чтобы избавиться от ошибки, я добавил карту метода экземпляра (словарь: NSDictionary), и ошибка ошибки сегментации исчезла.
источник
Для меня проблема заключалась в том, что моя архитектура не соответствовала стандарту. Я добавил i386 или что-то в этом роде, просто вернул его к арке xcodeproject по умолчанию, и он компилировался нормально.
источник
У меня была такая же проблема в быстром проекте. Проблема заключалась в функции, которая должна была вернуть объект, но не имела возврата. Раньше об ошибках такого рода сообщалось при редактировании с помощью Obj-C. Похоже, что в Swift это не так.
источник