मैं स्विफ्ट 2 के लिए एक संक्रमण मार्गदर्शिका का पता लगाने की कोशिश कर रहा हूं, विशेष रूप से डेवलपर्स को स्विफ्ट 1/1.2 कोडबेस को स्विफ्ट 2 पर माइग्रेट करते समय अवगत होना चाहिए। जाहिर है आपके पास एक्सकोड में माइग्रेशन सहायक है, लेकिन केवल वास्तव में कवर गधे का काम और सामान नहीं जो थोड़ा और बुद्धिमान विचार की आवश्यकता है।बेवकूफ स्विफ्ट 2 (एकेए जहां स्विफ्ट 2 संक्रमण गाइड है) में माइग्रेट करने के लिए चेकलिस्ट?
संसाधनों मैं स्विफ्ट 2 पर मिल करने में सक्षम था के आधार पर, मैं एक साथ निम्नलिखित चेकलिस्ट तैयार की है:
- ट्राई/कैच/फेंक त्रुटि निवारण - वसूली योग्य त्रुटियों के लिए इस्तेमाल किया जा करने के लिए; तदनुसार त्रुटि हैंडलिंग कोड संशोधित करें। विशेष रूप से,
NSError
के सभी उपयोगों की जांच करें और पुनर्प्राप्ति योग्य त्रुटियों की रिपोर्ट करने के लिए प्रतिनिधियों को वापस कॉल करें। enums
ErrorType
के अनुरूप अपनी स्वयं की सार्थक त्रुटियों को परिभाषित करने के लिए उपयोग करें।- नए प्लेटफार्म एपीआई तक पहुंचने के लिए # उपलब्ध का उपयोग करें - एप परिनियोजन लक्ष्य के खिलाफ एपीआई उपयोग की जांच करें और
- प्रोटोकॉल एक्सटेंशन - पुन: उपयोग में सहायता के लिए जितना संभव हो उतना कोड ले जाएं। प्रोटोकॉल एक्सटेंशन में विशेष रूप से रिफैक्टर ग्लोबल फ़ंक्शंस।
- nullability एनोटेशन & जेनरिक - अनावश्यक वैकल्पिक बाइंडिंग और प्रकार कास्टिंग को दूर
- गुंजाइश और बड़े जल्दी
- ले जाएँ वर्ष
do { ... } while
छोरोंrepeat { }
को (अस्पष्टता को हटा दें और पठनीयता में सुधार करने के लिए) संसाधनों - उपयोग
guard
नियंत्रित करने के लिए उपयोगdo { }
जल्दी लौटने और अत्यधिक इंडेंटेशन से बचने के लिए - क्लोजिंग फाइल आदि जैसे क्लीनअप कोड के लिए
defer
का उपयोग करें - विकल्प सेट चूहे का उपयोग करें मूल्यों को एक साथ करने के बजाय (उदा।
viewAnimationOptions = [.Repeat, .CurveEaseIn, .TransitionCurlUp]
) - समीक्षा
public
एक्सेसर विनिर्देशक जिन्हें पहले परीक्षण का समर्थन करने के लिए आवश्यक था। इसके बजाय@testable
औरimport MyApp
का उपयोग करें। - ले जाएँ एकल मामला नई
if case .MyEnumCase(let value) = bar() where value != 42 { doThing(value) }
- उपयोग करने के लिए
switch
बयान को छानने के लिए "... में"for
जैसेif
छानने बयान युक्त छोरों को साफ करने केfor value in mySequence where value != "" { }
- सी समारोह संकेत के लिए देशी समर्थन - बंद या वैश्विक कार्य (स्थानीय संदर्भ पर कब्जा नहीं है जब ऐसा करने से)
- किसी भी नए चलो/var चेतावनी
- किसी भी अप्रयुक्त चर चेतावनी
- Failable initializers को ठीक ठीक उपयोग करते हुए प्रदान super.init को कॉल करने से पहले अब शून्य वापस कर सकते हैं - आवश्यक किसी भी पिछले कामकाज को हटा दें। हालांकि नामित प्रारंभकर्ताओं को अभी भी सभी संग्रहित गुणों को शून्य वापस करने से पहले प्रारंभ करना होगा।
सूत्रों का कहना है:
https://developer.apple.com/swift/blog/?id=29
https://developer.apple.com/swift/
https://developer.apple.com/videos/wwdc/2015/?id=106
http://www.raywenderlich.com/108522/whats-new-in-swift-2
मुझे क्या याद आया?
समस्या का एक हिस्सा यह है कि स्विफ्ट 2 ने पिछले डब्ल्यूडब्ल्यूडीसी को विकसित करना जारी रखा है। तो इस वर्ष के डब्ल्यूडब्ल्यूडीसी वीडियो पहले से ही संभावित रूप से पुराने हैं, या कम से कम पूरी कहानी नहीं हैं।
[स्विफ्ट प्रोग्रामिंग भाषा] के लिए संशोधन इतिहास (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/RevisionHistory.html#//apple_ref/doc/uid/TP40014097- सीएच 40-आईडी 45 9) और [कोको और उद्देश्य-सी के साथ स्विफ्ट का उपयोग करना] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/RevisionHistory.html#//apple_ref/doc/uid/ टीपी 40014216-सीएच 14-आईडी 142) विस्तृत परिवर्तनों को देखने के लिए अच्छी जगह भी हैं। –
कुछ और बदलाव हैं। अधिकांश वैश्विक कार्य अब उदाहरण विधियां बन गए हैं, स्ट्रिंग अब संख्यात्मक नहीं है, कुछ विधियों और प्रोटोकॉल का नाम बदल दिया गया है। 1.2 और 2.0 के बीच परिवर्तन देखने के लिए एक अतिरिक्त अच्छा संसाधन http://swiftdoc.org है। – MirekE