Menambahkan height
properti komputasi (nyaman) ke UIView
dalam UIViewExtension.swift
file saya menyebabkan kompilator Swift menjadi segfault ... Apa yang mungkin salah di sini?
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
Jika informasi lebih lanjut diperlukan untuk memecahkan ini, cukup beri komentar. Terima kasih!
Edit:
Berikut ini .xcodeproj terkait yang mengembalikan kesalahan penyusun pertanyaan ini. Unduh disini
Jawaban:
Saya mengalami kesalahan ini karena saya melakukan ini:
dari pada
jadi saya pikir opsional tidak dibuka jika kondisi dapat menyebabkan kesalahan ini
sumber
Saat Anda menemukan kompiler segfault di Swift, Anda tidak mendapatkan nomor baris dan pesan kesalahan yang berguna. Inilah cara Anda melacak masalahnya:
SegFaultDebugger.swift
dalam proyek Anda.SegFaultDebugger.swift
.Pada titik ini, salah satu dari tiga hal terjadi:
SegFaultDebugger.swift
kembali ke file asli dan pindahkan kumpulan metode yang berbeda ke dalamnyaSegFaultDebugger.swift
. UlangSegFaultDebugger.swift
: Hebat! Sekarang gunakan pencarian biner untuk menyematkan segfault ke metode tertentu sampai Anda dapat mengetahui konstruksi apa yang menyebabkannya.sumber
Saya mendapat kesalahan ini saat memperluas salah satu protokol saya dan argumen tipe salah ketik dan opsional.
Perbedaan argumen fungsi
String
dalam prototipe danString?
ekstensi menyebabkan Kesalahan Segmentasi 11 .sumber
Saya mengalami kesalahan ini juga, dan saya memperbaikinya seperti ini:
Periksa proyek Anda dan cari tahu file mana yang digunakan dua kali dan hapus satu, atau hapus dan tambahkan kembali semuanya.
Kesalahan dalam Xcode saya:
sumber
Di Xcode 7, Anda dapat mengklik kesalahan di Debug Navigator dan Anda akan diperlihatkan tampilan crash yang diperluas. Mengklik tombol hamburger di sebelah kanan akan memperluas kesalahan, dan jika Anda menggulir ke bawah ke bagian bawah pesan kesalahan yang diperluas, Anda akan melihat dari mana asalnya.
Bagi saya, saya mengalami dua kesalahan kesalahan segmentasi tersebut. Pada gambar di atas, yang pertama adalah tampilannya saat diciutkan, yang kedua adalah saat Anda meluaskan tombol hamburger. Di bagian paling bawah kotak abu-abu yang diperluas, Anda akan melihat pesan yang mengatakan di mana kompilator rusak.
Namun perlu dicatat bahwa pesan kesalahan kadang-kadang mungkin tidak cukup informatif, jadi meskipun ia memberi tahu Anda di mana ia macet, itu tidak selalu mengatakan mengapa dan bagaimana memperbaikinya. Menyingkirkan kesalahan ini masih merupakan masalah tebakan.
sumber
Saya telah menemukan solusi sederhana hingga masalahnya diperbaiki di Xcode / Swift build di masa mendatang:
.swift
file yang sedang digunakan.Dalam proyek contoh yang Anda berikan, tempatkan konten
UIViewExtension.swift
dan diCALayerExtension.swift
atasnyaAppDelegate.swift
Mudah-mudahan ini bisa membuat kita menulis kode Swift yang berfungsi sampai masalah teratasi.
sumber
Bagi saya, menambahkan
private
ke clang crash var statis:sumber
Saya mengalami kesalahan segmentasi kompiler pada pernyataan seperti ini:
Saya hanya melakukan pernyataan jika-lain dan berhasil.
sumber
Anda juga dapat mengalami masalah ini jika Anda mendeklarasikan kondisi dengan Bool yang tidak dibungkus sebagai properti
sumber
Dalam kasus saya, titik dua yang salah tempat selama interpolasi string merusak milik saya (XCode 6.1.1).
Contoh:
ketika saya bermaksud untuk melakukan:
sumber
Kesalahan ini terjadi pada saya ketika saya mencoba menimpa variabel lemah dari kelas induk.
Di kelas dasar:
Kelas turunan:
Kesalahan hilang ketika saya menghapus
=nil
dari kelas turunan.sumber
Saya menangkap beberapa pengecualian hari ini
dan ini menyelesaikannya:
Karena tipe "Any" adalah semua tipe event "nil", "AnyObject", opsional, ... :) Ini tidak bisa opsional, itu sudah opsional.
sumber
Kesalahan ini juga terjadi jika Anda secara tidak sengaja mendeklarasikan variabel dengan tipe yang cocok dengan namanya:
sumber
Mengalami kesalahan ini karena tipe generik asing pada fungsi operator, misalnya
Dalam kasus saya, menghapus
<T>
menyelesaikan masalah.sumber
Dalam kasus saya, saya telah menyatakan bagian
struct
dalam afunc
. Pindahstruct
ke tingkat kelas memecahkan masalah.Sekarang saya menulis ini, saya ingat pernah memiliki masalah dengan
struct
insidefunc
s sebelumnya. Itu adalah sesuatu yang lain dari kesalahan segmentasi (yang tampaknya menjadi terkenal dengan Swift 1.2 beta). OMG Apple, apa yang kamu lakukan disana?sumber
Dalam kasus saya, kesalahan ini karena saya menggunakan nama Kelas untuk variabel
Dan ini memperbaiki masalah saya
sumber
Saya kasus saya, ini terjadi ketika saya melakukan inisialisasi statis yang salah dalam protokol. Saya menemukan cara untuk menyiasati, tetapi kompiler seharusnya tidak pernah menghasilkan kesalahan segmentasi saat membangun.
Ada tiga file yang terlibat. Protokol NamedSegues.swift, TableViewController khusus yang antara lain mengimplementasikan protokol yang berisi callback, TableViewCell khusus yang menyimpan referensi ke protokol ini untuk memanggil callback.
Saya menyiasatinya dengan menggunakan?
Di file protokol, file1: hapus deklarasi getDefault () Dalam CustomController file2: hapus implementasi getDefault. Di CustomCellView, file3:
Kompilator seharusnya menangkap ini dan memberikan beberapa pesan kesalahan daripada melemparkan kesalahan segmentasi selama pembuatan!
sumber
Sepertinya kompiler Swift 2 mungkin belum cukup siap untuk prime-time! Dalam hal ini membantu siapa pun, saya mendapatkan kesalahan segmentasi: 11 karena ketidakcocokan dengan tipe variabel di header penutupan, khususnya dalam metode Parse ,
PFQuery.query.findObjectsInBackgroundWithBlock
.Anda dapat melihat masalah tersebut lebih detail di sini: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/280
sumber
Seperti yang dikatakan @Fjohn , ini adalah masalah yang terkait dengan membuka bungkus opsional bagi saya (rusak di Xcode 7.0 beta 6 dan Xcode 7). Dalam kasus saya, saya tidak membuka bungkus opsional dari opsional (apa yang memberi tahu saya adalah dua kali lipat ?? dalam deskriptor. Menggunakan jika biarkan memecahkan masalah
sumber
Seperti yang ditulis orang lain di atas, bagi saya ini terjadi ketika saya menggunakan ekstensi melalui protokol tetapi tanda tangan metode dalam protokol tidak cocok dengan implementasi dalam ekstensi.
Dalam kasus saya, saya telah menambahkan parameter baru ke implementasi (dalam ekstensi) tetapi lupa juga menambahkannya ke tanda tangan metode dalam protokol.
sumber
dalam kasus saya, saya mencoba menambahkan parameter fungsi setelah parameter variadic.
Membalik urutan parameter dan menjadikan parameter variadic sebagai parameter terakhir dalam daftar parameter memperbaikinya.
sumber
Ini biasanya terjadi ketika kompilator tidak memiliki cukup informasi (terlepas dari apa yang Anda pikirkan) untuk menjamin / menentukan status pernyataan atau variabel dalam pernyataan.
Misalnya, bayangkan Anda memiliki kamus berjenis [String: String] yang Anda isi dengan nama kota sebagai kunci dan daftar kode pos / kode pos terkait yang dipisahkan koma.
Bayangkan bahwa di suatu tempat di kode Anda, Anda ingin memperbarui daftar kode yang sesuai:
Dalam kasus ini, kompilator akan merespon dengan kesalahan segmentasi karena
town
mungkin tidak ada dalam kamus dan oleh karena itu tidak dapat menjamin bahwa pernyataan di atas akan memiliki nilai yang valid.Untuk mengatasi hal ini, Anda harus menyimpan status saat ini
myDict[town]
dalam variabel terpisah yang memungkinkan Anda menangani kasuskey not in dict
dan kemudian memperbarui nilai untuk kunci yang diberikan:Sayangnya, tidak selalu mudah untuk menentukan akar masalahnya, jadi saya harap contoh sederhana ini bisa membantu.
sumber
Swift 3.0 (Xcode 8.1) menunjukkan masalah ini ketika protokol mendeklarasikan variabel opsional, dan pelaksana mengimplementasikan variabel tersebut sebagai variabel yang diinisialisasi dengan lambat.
Bug dilaporkan di sini: https://bugs.swift.org/browse/SR-1825
sumber
Xcode 8.2.
Menambahkan
@nonobjc
implementasi protokol ke dalam ekstensi menyebabkan kesalahan segmentasi. Pindahkan@nonobjc
implementasi protokol ke dalam implementasi kelas.sumber
Dalam kasus saya, pelakunya secara tidak sengaja membebani fungsi yang mengharapkan argumen array dengan argumen variadic :
Ketika superclass mendefinisikannya sebagai sebuah array:
sumber
Bagi saya hal berikut menyebabkan segfault sementara
type
adalah opsional:dan ini menyelesaikannya:
sumber
Saya mendapat kesalahan ini dengan tanda tangan metode berikut di UITableViewController kustom.
berubah menjadi:
memperbaiki masalah.
sumber
Saya memiliki masalah yang sama dalam perpanjangan waktu. Ekstensi saya memiliki dua penginisialisasi kemudahan:
Untuk menghilangkan kesalahan saya menambahkan peta metode contoh (kamus: NSDictionary) dan kesalahan kesalahan segmentasi menghilang.
sumber
Bagi saya masalahnya adalah arsitektur saya tidak diatur ke standar. Saya telah menambahkan i386 atau sesuatu, cukup setel kembali ke arch xcodeproject default dan itu dikompilasi dengan baik.
sumber
Saya memiliki masalah yang sama dalam proyek cepat. Masalahnya adalah fungsi yang seharusnya mengembalikan objek, tetapi tidak memiliki pengembalian di dalamnya. Jenis kesalahan ini biasanya ditandai saat mengedit dengan Obj-C. Sepertinya tidak demikian halnya di Swift.
sumber