swift - कोड जोड़कर रिलीज़ बिल्ड में बिल्ट तय करने में स्विफ्ट लिंकर त्रुटि




linker linker-errors (3)

Xcode 8 में, डीबग मोड में मेरे काम की स्विफ्ट परियोजना लेकिन रिलीज मोड में लिंक करने में विफल रहता है:

Undefined symbols for architecture x86_64:
  "Swift.UnsafeMutableBufferPointer.(subscript.materializeForSet : (Swift.Int) -> A).(closure #1)"

मैं इस रेखा को बदलकर त्रुटि को ठीक कर सकता हूं:

let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).sorted(by: { $0.startDate < $1.startDate }).first

सेवा मेरे:

let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).first

लेकिन यह स्पष्ट रूप से मेरे ऐप के व्यवहार को बदल देती है सौभाग्य से, मैं निम्न पंक्ति को लगभग किसी भी विधि, प्रारंभकर्ता, या संपत्ति पर्यवेक्षक से जोड़कर त्रुटि को ठीक कर सकता हूं:

let _ = [""].sorted(by: {$0 < $1})

(मैं "लगभग" किसी भी कारण से कहता हूं क्योंकि यह लिंकर त्रुटि को ठीक करने में प्रतीत नहीं होता है, जब enum प्रकार के गुणों पर संपत्ति पर्यवेक्षकों को जोड़ा जाता है तो मैं खुद को परिभाषित करता हूं।)

...क्या?


क्या उसी समस्या थी जब स्विफ्ट 3 के लिए माइग्रेट करना

मुझे वो ऑब्जेक्ट देकर काम करने के लिए मिल गया, जो कोड को एनएसओबाक्ज से प्राप्त होता है।


सबसे पहले मैंने सोचा था कि तुलनात्मक सामान के साथ कुछ जगहों में अजीब कोड सेब सम्मिलित है ... लेकिन मैंने इसे वापस जोड़ने पर काम नहीं किया। क्या काम करने के लिए ऑप्टिमाइज़ेशन स्तर को नीचे कदम करना था: तेज़, एकल फ़ाइल ऑप्टिमाइज़ेशन वे इस xcode संस्करण को गड़बड़ कर देते हैं, स्टोरीबोर्ड भी बड़ी समस्याएं हैं।


मुझे उसी समस्या का sorted(by: करके sorted(by: एक: प्रोजेक्ट में तरीका है जो मैं स्विफ्ट 3 में माइग्रेट कर रहा था)

यह संकलक में एक बग लगता है और मुझे यह निम्नलिखित संदर्भ मिले:

अभी के लिए मेरे लिए काम करने वाले एकमात्र समाधान वैकल्पिक रूप से बिल्ड कंप्यूटर्स ऑप्टिमाइज़ेशन स्तर को बिलकुल नहीं बदलता है।







xcode8