निर्माण के समय स्विफ्ट कंपाइलर सेगमेंटेशन दोष


100

मेरी फ़ाइल में एक सुविधाजनक (सुविधाजनक) संगणित heightसंपत्ति जोड़ने से स्विफ्ट कंपाइलर सेगफॉल्ट हो रहा है ... संभवतः यहां क्या गलत हो सकता है?UIViewUIViewExtension.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 है जो इस प्रश्न के संकलक त्रुटि को लौटाता है। यहाँ डाउनलोड करें


7
संकलक सेगफॉल्ट नहीं होना चाहिए। यदि यह एक नया मुद्दा है, तो बग रिपोर्ट दर्ज करें।
कारोली होर्वाथ

3
एक कंपाइलर बग जैसा दिखता है। आपको इसे Apple को रिपोर्ट करना चाहिए ताकि वे इसे सुलझा सकें।
चक

11
कंपाइलर को बाएं और दाएं सेगफॉल्टिंग किया गया है क्योंकि मैं स्विफ्ट के लिए ऑब्जेक्टिव-सी प्रोजेक्ट माइग्रेट कर रहा हूं। यह कम से कम कहने के लिए निराशाजनक है।
एलेक्लेरसन

1
@aleclarson मुझे लगता है कि रिलीज़ संस्करण बेहतर काम करेगा, लेकिन अगर आप बग ढूंढते हैं, तो मैं उन्हें रिपोर्ट करूंगा क्योंकि हो सकता है कि वे रिलीज़ होने से पहले ही ठीक हो जाएं।
जोआचिम इस्कासन

6
मैं सोच रहा था कि स्विफ्ट गेट के ठीक बाहर इस्तेमाल करने के लिए तैयार थी। इंतज़ार कर रही है! :)
एलिकार्सन

जवाबों:


75

मेरे पास यह त्रुटि थी क्योंकि मैं यह कर रहा था:

if(currentMeal?.State == .Deleted){

}

के बजाय

if(currentMeal!.State == .Deleted){

}

इसलिए मुझे लगता है कि अगर हालत इस त्रुटि का कारण बन सकती है तो वैकल्पिक नहीं है


3
मेरे लिए भी यही कारण था। लेकिन क्या यह सही माना जाना चाहिए था? यह केवल एक कंपाइलर बग है यह है
DeFrenZ

वही। वैकल्पिक एनुम जाँच। आशा है कि वे इसे ठीक करेंगे
mente

सही कोड होगा: if (currentMeal.State ==। हटाए गए) {} के रूप में स्विफ्ट मदद से अधिभार == दो वैकल्पिक के लिए जो समान हैं। फजन की पोस्ट काफी खतरनाक है।
१:१५ बजे

1
यह एक संकलन त्रुटि के बारे में है, यदि चर पहले सत्यापित नहीं है तो मैं पिछले कोड खतरनाक है। यदि आपका कोड चालू है, तो nil क्या है? यह वही नहीं है? क्या आप मुझे समझा सकते हैं कि मेरा कोड आपके लिए कृपया अधिक खतरनाक क्यों है? स्विफ्ट "का उपयोग किए बिना वैकल्पिक का लाभ उठाएं?" ?
फजोहोन

धन्यवाद, यह मेरा मामला भी है। स्विफ्ट मुझे रास्ते भर अप्रिय आश्चर्य देता रहा है, लेकिन यह एक सीमा से अधिक रास्ता है।
कोड

26

जब आप स्विफ्ट में एक कंपाइलर सेगफॉल्ट में भाग लेते हैं, तो आपको एक आसान लाइन नंबर और त्रुटि संदेश नहीं मिलता है। यहां बताया गया है कि आप समस्या को कैसे ट्रैक कर सकते हैं:

  1. SegFaultDebugger.swiftअपने प्रोजेक्ट में नामक एक नई फ़ाइल बनाएँ ।
  2. इस नई फ़ाइल में, उस वर्ग के विस्तार को परिभाषित करें जो आपको समस्याएं दे रहा है।
  3. मुख्य फ़ाइल से विधियों का एक समूह ले जाएँ SegFaultDebugger.swift
  4. संकलित करें।

इस बिंदु पर, तीन चीजों में से एक होता है:

  • आपको अभी भी मूल फ़ाइल में सेगफ़ॉल्ट मिलता है : विधियों SegFaultDebugger.swiftको मूल फ़ाइल में वापस ले जाएँ और तरीकों का एक अलग सेट ले जाएँSegFaultDebugger.swift । दोहराना
  • तुम में एक segfault मिलता हैSegFaultDebugger.swift : महान! अब द्विआधारी खोज का उपयोग एक विशिष्ट विधि के लिए सेगफॉल्ट को पिन करने के लिए करें जब तक आप यह पता नहीं लगा सकते हैं कि निर्माण क्या कारण है।
  • आपको सार्थक संकलक त्रुटियाँ मिलती हैं : महान! त्रुटियों को ठीक करें। एक बार जब सब कुछ संकलित हो जाता है, तो अपने तरीकों को मूल फ़ाइल में वापस ले जाएं।

1
धन्यवाद! इससे मेरे सिर को खरोंचने के घंटों के बाद मदद मिली।
dejavu89

1
यह बहुत उपयोगी था! मेरे मामले में, मेरे पास मेरा NSFetchedResultsControllerDelegate एक विस्तार में था और यह मुख्य वर्ग ब्लॉक में वापस विलय करने के लिए पर्याप्त था।
मिकेल ग्रान

@ MikaelGrön - क्या आप उस पर विस्तार कर सकते हैं? आपके पास विस्तार में वास्तव में क्या था?
रयान जेएमएम

लेकिन आप कैसे जानते हैं कि कौन सा वर्ग आपको मुद्दे दे रहा है?
रेवरेंड

@theRendend यदि आप निश्चित नहीं हैं, तो आपको प्रत्येक कक्षा को आपत्तिजनक फ़ाइल में आज़माना होगा। लेकिन स्विफ्टक में वास्तव में कुछ वर्षों में सेगफॉल्ट समस्या नहीं हुई है - यकीन नहीं कि मेरा जवाब अब भी प्रासंगिक है।
बिल

12

मेरे एक प्रोटोकॉल और गलत और वैकल्पिक प्रकार के तर्क को बढ़ाते हुए मुझे यह त्रुटि मिली।

protocol SomeProtocolName: class {
    var someProtocolVariable: String { get set }

    func someProtocolFunction(someProtocolVariable: String)
}

// MARK:
extension SomeProtocolName {
    func someProtocolFunction(someProtocolVariable: String?) {
        self.someProtocolVariable = someProtocolVariable
    }
}

Stringप्रोटोटाइप और String?विस्तार में फ़ंक्शन तर्कों में अंतर सेगमेंटेशन फ़ॉल्ट 11 का कारण बना ।


3
मुझे भी यही मिला। ऐसा लगता है कि Apple के पास अपनी वैकल्पिक टाइपिंग के साथ कुछ समस्याएँ हैं। एक प्रमुख मुद्दा कब है! एक चर प्रकार के अंदर प्रयोग किया जाता है। यह डिफ़ॉल्ट रूप से गैर-वैकल्पिक है, लेकिन संकलक भ्रमित हो जाता है।
user1122069

@ user1122069 सहमत हैं, प्रोटोकॉल में कुछ समस्याएँ हैं। अगले संस्करणों के साथ आशा है कि यह मुद्दे तय हो जाएंगे।
विजेता .वासिलिका

मैं प्रोटोकॉल के बारे में बात नहीं कर रहा था, बस सामान्य रूप से। मैंने अभी सीखा है क्या! एक चर के अंदर है, लेकिन आईडीई और संकलक अक्सर सटीक त्रुटियों को प्राप्त करने में विफल रहते हैं!
user1122069

@ user1122069 मेरी बुरी, संतरी।
विजेता.वासिलिका

यह मेरे साथ तब हुआ जब एक सरणी में बहुत सी वस्तुओं को जोड़ते हुए
aguilarpgc

9

मेरे पास भी यह त्रुटि थी, और मैंने इसे इस तरह तय किया:

अपने प्रोजेक्ट की जांच करें और पता करें कि कौन सी फाइलें दो बार उपयोग की जाती हैं और एक को हटा दें, या हटा दें और उन सभी को फिर से जोड़ें।

मेरे Xcode में त्रुटियां:

: 0: त्रुटि: फ़ाइल नाम "AttributedString.swift" का दो बार उपयोग किया गया: '/User/.../CNJOB/CNJOB/AttributedString.swift' और '/Users/../CNJOB/CNJOB/AttributedString.swift'

: 0: ध्यान दें: फ़ाइल नाम का उपयोग निजी घोषणाओं को एक ही नाम से अलग करने के लिए किया जाता है

: 0: त्रुटि: फ़ाइल नाम "APIClient.swift" का उपयोग दो बार किया गया: '/User/.../CNJOB/CNJOB/APIClient.swift' और '/Users/.../CJJOB/CNJOB/APIClient.swift'

: 0: ध्यान दें: फ़ाइल नाम का उपयोग निजी घोषणाओं को एक ही नाम से अलग करने के लिए किया जाता है

आदेश / अनुप्रयोग / Xcode 3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc निकास कोड 1 के साथ विफल हुआ


8

Xcode 7 में, आप डीबग नेविगेटर में त्रुटि पर क्लिक कर सकते हैं और आपको क्रैश का विस्तृत दृश्य दिखाया जाएगा। दाईं ओर हैमबर्गर बटन पर क्लिक करने से त्रुटि का विस्तार होता है, और यदि आप विस्तारित त्रुटि संदेश के नीचे तक सभी तरह से स्क्रॉल करते हैं, तो आप देखेंगे कि यह कहां से आता है।

यहां छवि विवरण दर्ज करें

मेरे लिए, मेरे पास उन विभाजन दोष त्रुटियों में से दो थे। ऊपर की तस्वीर में, पहले वाला वही है जो ढहने पर दिखता है, दूसरा जब आप हैमबर्गर बटन का विस्तार करते हैं। विस्तारित ग्रे बॉक्स के बहुत नीचे, आपको एक संदेश दिखाई देगा जो कहता है कि संकलक दुर्घटनाग्रस्त हो गया है।

ध्यान दें कि त्रुटि संदेश कई बार पर्याप्त जानकारीपूर्ण नहीं हो सकता है, इसलिए जब यह बताता है कि यह कहां दुर्घटनाग्रस्त हो गया है, तो यह हमेशा यह नहीं कहता कि इसे क्यों और कैसे ठीक किया जाए। इस त्रुटि से छुटकारा पाना अभी भी अनुमान का विषय है।


1
नेविगेटर से त्रुटियों को ट्रैक करने में सक्षम था। धन्यवाद, इससे मुझे अपनी त्रुटियों को ठीक करने में मदद मिली!
विशाल चंद्रन

5

जब तक कि भविष्य में Xcode / Swift बिल्ड में समस्या ठीक न हो जाए, मैंने एक साधारण हल खोज लिया है:

  • बस उस .swiftफ़ाइल में समस्या के कारण सभी एक्सटेंशन रखें, जिसका उपयोग किया जा रहा है।

आपके द्वारा दिए गए उदाहरण परियोजना में, ऊपर UIViewExtension.swift और ऊपर की सामग्री रखेंCALayerExtension.swift AppDelegate.swift

उम्मीद है कि यह हमें लिखने के लिए प्राप्त कर सकते हैं काम कर रहे हैं जब तक समस्या को मंजूरी दे दी है स्विफ्ट कोड।


4

मेरे लिए, privateस्थैतिक संस्करण निश्चित क्लैंग दुर्घटना में जोड़ना :

private static var taskId = 0

2

मेरे पास इस तरह के एक बयान पर संकलक विभाजन दोष था:

someFunction(isFlagged ? "String1" : "String2")

मैंने सिर्फ एक if-else स्टेटमेंट किया और यह काम करता है।


1
स्विफ्ट 3: यह जवाब कई प्रोजेक्ट्स में सेगमेंटो फॉल्ट 11 को हल करता है।
एलेसैंड्रो ऑर्नानो

वाह, अविश्वसनीय। स्विफ्ट कंपाइलर इन सभी मुद्दों के साथ एक अल्फा संस्करण की तरह लगता है। इसके लिए शुक्रिया।
TGO

2

यदि आप एक संपत्ति के रूप में एक अलिखित बूल के साथ एक शर्त घोषित करते हैं तो आपको यह समस्या भी हो सकती है


1

मेरे मामले में, स्ट्रिंग प्रक्षेप के दौरान एक गलत बृहदान्त्र ने मेरा (XCode 6.1.1) तोड़ दिया।

उदाहरण:

println("\(value1:value2)") 

जब मेरा मतलब था:

println("\(value1) : \(value2)")

1

यह त्रुटि मुझे तब हुई जब मैंने पैरेंट क्लास से कमजोर वेरिएबल को ओवरराइड करने की कोशिश की।

बेस क्लास में:

weak var stripeViewDelegate : StripeViewDelegate? = nil    

व्युत्पन्न वर्ग:

override weak var stripeViewDelegate : StripeViewDelegate? = nil {
    didSet {
        self.stripeView.delegate = stripeViewDelegate

    }

जब मैं =nilव्युत्पन्न वर्ग से हटा, तो त्रुटि गायब हो गई।


1

मैं आज कुछ अपवादों को पकड़ता हूं

class func createByAny(instance: Any?) -> ApiCollectionResponse { ... }

और इसने इसे हल किया:

class func createByAny(instance: Any) -> ApiCollectionResponse { ... }

क्योंकि "कोई भी" प्रकार किसी भी प्रकार की घटना है "शून्य", "AnyObject", वैकल्पिक, ... :) यह वैकल्पिक नहीं हो सकता है, यह पहले से ही वैकल्पिक है।

typealias Any = protocol<>

मेरा मामला "एनी" के साथ भी एक समस्या थी
एड्रियनो स्पैडोनी

1

यह त्रुटि तब भी होती है जब आप गलती से इसके नाम से मेल खाते हुए एक चर घोषित करते हैं:

    var sectionGroup: sectionGroup? { ... }

यदि आप एप्पल के नामकरण सम्मेलन का पालन करते थे और इस प्रकार के लिए पहले ऊपरी अक्षर का उपयोग करते थे, तो यह एक मुद्दा नहीं होगा। जो संभावना है कि क्यों Apple इस पर ठोकर नहीं खाई है। इसके अलावा आपका उत्तर @aminhotob
qwerty_so

1

एक ऑपरेटर फ़ंक्शन पर एक बाहरी सामान्य प्रकार के कारण इस त्रुटि में भाग गया, जैसे

func ==<T>(lhs: Foo, rhs: Foo) -> Bool {
  return lhs.bar == rhs.bar
}

मेरे मामले में, <T>इस मुद्दे को हल करके हटा दिया गया।


यहाँ भी वही समस्या है, सामान्य तौर पर ऐसा लगता है कि वास्तव में उपयोग नहीं किए जाने वाले जेनरिक को परिभाषित करना इस त्रुटि का कारण होगा।
केविन आर

1

मेरे मामले में मैंने एक के structअंदर की घोषणा की थी func। बढ़ते structवर्ग स्तर तक समस्या हल हो जाती।

अब जब कि मैं यह लिखता हूं तो मुझे याद है कि पहले से structअंदर के मुद्दों थे func। यह विभाजन दोष के अलावा कुछ और था (जो स्विफ्ट 1.2 बीटा के साथ कुख्यात हो रहा है)। OMG Apple, आप वहां क्या कर रहे हैं?


मेरे पास एक संरचना में 3 चर थे और यह ठीक काम करता था, 4 वें को जोड़ने से विभाजन दोष का कारण बनता था। कक्षा में बदलती संरचना ने इसे मेरे लिए हल कर दिया
एहाब आमेर

1

मेरे मामले में, यह त्रुटि है क्योंकि मैं चर के लिए वर्ग नाम का उपयोग करता हूं

var MYClass : MYClass {
    get {
        return.....
    }
}

और यह मेरी समस्या को ठीक करता है

var myClass : MYClass {
    get {
        return.....
    }
}

1

Im मेरा मामला, यह तब हुआ जब मैंने एक प्रोटोकॉल में गलत स्थैतिक आरंभ किया। मुझे चारों ओर जाने का रास्ता मिला, लेकिन एक कंपाइलर को कभी भी बिल्डिंग बनाते समय सेगमेंटेशन फॉल्ट नहीं पैदा करना चाहिए ।

इसमें तीन फाइलें शामिल हैं। एक प्रोटोकॉल NamedSegues.swift, एक कस्टम TableViewController जो अन्य चीजों के बीच प्रोटोकॉल को लागू करता है जिसमें कॉलबैक होता है, एक कस्टम टेबल व्यू कॉनेल जो कॉलबैक को कॉल करने के लिए इस प्रोटोकॉल का संदर्भ रखता है।

//file1
import Foundation
protocol NamedSegues {
    func  executeSegueWithId(id: String) -> Void
    static func getDefault() -> NamedSegues  // This was required because of init requirement in CustomCellView
}


//file2
class CustomController: UITableViewController, NamedSegues {
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCellWithIdentifier("CustomCellID", forIndexPath: indexPath ) as! CustomCellView

        // Configure the cell...
       //App logic...

        cell.parent = self
}

 //Mark: NamedSegues
     func executeSegueWithId(id: String) ->() {
        NSLog("Received callback to execute segue: \(id)")
        //
    }

    static func getDefault() -> NamedSegues { // I think this must be where it threw up.
        return self as! NamedSegues
    }

}


//file3

import UIKit

class CustomCellView: UITableViewCell {

    var id: String = "NoName"
    var parent: NamedSegues = NamedSegues.getDefault() // This is where it was needed.


override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        NSLog("Touched id: \(id)")


             parent.executeSegueWithId(id) // This is where parent was used.
     }
}

मैं का उपयोग करके इसे चारों ओर मिला?

प्रोटोकॉल फ़ाइल में, file1: getDefault की घोषणा को हटा दें () CustomController file2 में: getDefault के कार्यान्वयन को हटा दें। CustomCellView में, फ़ाइल 3:

    var parent: NamedSegues?
    ...
    parent?.executeSegueWithId(id)

कंपाइलर को इसे पकड़ना चाहिए था और निर्माण के दौरान सेगमेंटेशन फॉल्ट को फेंकने के बजाय कुछ त्रुटि संदेश दिया था!


1

लगता है कि स्विफ्ट 2 कंपाइलर प्राइम-टाइम के लिए काफी तैयार नहीं रहा होगा! यदि यह किसी की मदद करता है, तो मुझे विभाजन दोष मिल रहा था: 11 एक बंद शीर्षलेख में चर प्रकार के साथ एक बेमेल के कारण, विशेष रूप से एक पार्स विधि में PFQuery.query.findObjectsInBackgroundWithBlock,।

आप इस मुद्दे को और अधिक विस्तार से देख सकते हैं: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/280


1

जैसा @Fjohn ने कहा, यह मेरे लिए एक वैकल्पिक unwrapping से संबंधित एक मुद्दा था (दोनों Xcode 7.0 बीटा 6 और Xcode 7 में तोड़ दिया)। मेरे मामले में, मैं वैकल्पिक के अलिखित नहीं था (जो मुझे बंद कर दिया था वह डबल था। डिस्क्रिप्टर में। यदि समस्या को हल किया जाए तो इसका उपयोग करना।

डबल वैकल्पिक कारण विभाजन दोष


1

जैसा कि दूसरों ने ऊपर लिखा है, मेरे लिए यह तब हुआ जब मैं एक प्रोटोकॉल पर विस्तार का उपयोग कर रहा हूं, लेकिन प्रोटोकॉल में विधियों के हस्ताक्षर एक विस्तार में कार्यान्वयन से मेल नहीं खाते हैं।

मेरे मामले में, मैंने कार्यान्वयन (विस्तार में) के लिए एक नया पैरामीटर जोड़ा था, लेकिन यह प्रोटोकॉल में विधि के हस्ताक्षर में जोड़ना भी भूल गया।


1

मेरे मामले में, मैंने एक चर पैरामीटर के बाद एक फ़ंक्शन पैरामीटर जोड़ने की कोशिश की।

पैरामीटर अनुक्रम को उलट देना और पैरामीटर सूची में अंतिम पैरामीटर को वैरिएड पैरामीटर बनाना इसे तय किया।


1

यह आम तौर पर तब होता है जब संकलक के पास पर्याप्त जानकारी नहीं होती है (आप जो सोचते हैं उसके बावजूद) एक स्टेटमेंट या एक स्टेटमेंट के भीतर एक वैरिएबल की गारंटी / निर्धारण करने के लिए।

उदाहरण के लिए, कल्पना करें कि आपके पास टाइप का एक शब्द है [स्ट्रिंग: स्ट्रिंग] जिसे आप शहर के नाम के साथ कुंजी के रूप में आबाद करते हैं और इसी ज़िप कोड / पोस्ट कोड के एक अल्पविराम से अलग सूची।

कल्पना करें कि आपके कोड में कहीं आप इसी कोड की सूची को अपडेट करना चाहते हैं:

myDict[town] += newZipCode + ","

इस मामले में, कंपाइलर सेगमेंटेशन फॉल्ट का जवाब देगा town कि डिक्शनरी में नहीं हो सकता है और इसलिए यह गारंटी नहीं दे सकता है कि उपरोक्त स्टेटमेंट का वैल्यू वैल्यू होगा।

इसे हल करने के लिए, आपको myDict[town]एक अलग चर में वर्तमान स्थिति को संग्रहीत करना चाहिए जिससे आप मामले को संभाल सकते हैं key not in dictऔर फिर दिए गए मूल्य के लिए अद्यतन कर सकते हैं:

myDict[town] = guaranteedValue + "," newZipCode + ","

दुर्भाग्य से, मूल कारण निर्धारित करने के लिए हमेशा सीधा नहीं होता है इसलिए मुझे आशा है कि यह सरल उदाहरण मदद करता है।


1

स्विफ्ट 3.0 (Xcode 8.1) इस मुद्दे को प्रदर्शित करता है जब एक प्रोटोकॉल एक वैकल्पिक चर घोषित करता है, और एक कार्यान्वयनकर्ता उस चर को एक आलसी के रूप में लागू करता है।

बग यहां बताया गया है: https://bugs.swift.org/browse/SR-1825


1

Xcode 8.2।

@nonobjcविस्तार में प्रोटोकॉल कार्यान्वयन जोड़ना विभाजन दोष पैदा करता है। @nonobjcप्रोटोकॉल कार्यान्वयन को कक्षा कार्यान्वयन में स्थानांतरित करें ।


1

मेरे मामले में अपराधी गलती से एक फ़ंक्शन को ओवरलोड कर रहा था, जिसमें एक चर तर्क के साथ एक सरणी तर्क की अपेक्षा थी :

public required init(_ args: Node...) {
}

जब सुपरक्लास ने इसे एक सरणी के रूप में परिभाषित किया था:

public required init(_ args: [Node]) {
}

0

मेरे लिए निम्नलिखित एक सेगफॉल्ट का कारण है जबकि typeएक वैकल्पिक है:

switch type {
    case .aType:
        // Do Something
    default:
        break
}

और इसने इसे हल किया:

switch type {
    case .Some(.aType):
        // Do Something
    default:
        break
}

0

मुझे कस्टम UITableViewController में निम्नलिखित विधि हस्ताक्षर के साथ यह त्रुटि मिली।

func filterContentForSearchText(searchText: String)

में बदल रहा है:

func filterContentForSearchText(searchText: String!)

समस्या को ठीक किया।


0

मुझे एक एक्सटेंशन में एक ही समस्या थी। मेरे एक्सटेंशन में दो सुविधा प्रारंभकर्ता थे:

convenience init(context: NSManagedObjectContext) {
    let entityDescription = NSEntityDescription.entityForName("PropertyEntity", inManagedObjectContext: context)!
    self.init(entity: entityDescription, insertIntoManagedObjectContext: context)
}

convenience init(dictionary: NSDictionary, context: NSManagedObjectContext) {
    self.init(context: context)
    property1 = (dictionary["key"] as? String) ?? ""
    // More properties...
}

त्रुटि से छुटकारा पाने के लिए मैंने एक इंस्टेंस मेथड मैप (डिक्शनरी: एनएसडॉर) जोड़ा और सेगमेंटेशन फॉल्ट एरर गायब हो गया।

convenience init(dictionary: NSDictionary, context: NSManagedObjectContext) {
    self.init(context: context)
    map(dictionary)
}

0

मेरे लिए यह मुद्दा था कि मेरे आर्किटेक्चर मानक के अनुरूप नहीं हैं। मैंने i386 या कुछ और जोड़ा था, बस इसे डिफ़ॉल्ट रूप से xcodeproject आर्च पर सेट किया और इसे ठीक संकलित किया।


0

मुझे एक स्विफ्ट प्रोजेक्ट में भी यही समस्या थी। मुद्दा एक ऐसा कार्य था जो एक वस्तु को वापस करना चाहिए था, लेकिन इसमें कोई वापसी नहीं थी। ओबज-सी के साथ संपादन करते समय इस तरह की त्रुटि का संकेत दिया जाता था। ऐसा लगता है कि स्विफ्ट में ऐसा नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.