अगर मेरे पास SwiftUI के साथ एक ऐप है, तो क्या यह iOS 13 के नीचे iOS के लिए काम करेगा?
अगर मेरे पास SwiftUI के साथ एक ऐप है, तो क्या यह iOS 13 के नीचे iOS के लिए काम करेगा?
जवाबों:
मैंने अभी इसे Xcode 11 में चेक किया था और पुष्टि कर सकता हूं कि यह पीछे की ओर संगत नहीं होगा, जैसा कि SwiftUI के View
कार्यान्वयन में देखा जा सकता है :
/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {
/// The type of view representing the body of this view.
///
/// When you create a custom view, Swift infers this type from your
/// implementation of the required `body` property.
associatedtype Body : View
/// Declares the content and behavior of this view.
var body: Self.Body { get }
}
मुझे ऐसा नहीं लगता, क्योंकि सभी पुस्तकालयों को पहले से ही iOS 13 या उच्चतर के लिए एनोटेट किया गया है।
इसके अलावा, प्रलेखन में , Apple स्पष्ट रूप से समर्थित संस्करणों का उल्लेख करता है:
SwiftUI और Combine , Swift 5.1 में Opaque-Return-Types का उपयोग करते हैं और चूंकि Opaque-Return-Types (अन्य सुविधाओं के साथ) Swift 5.1 में कार्यान्वित किया जाता है और उनके कार्यान्वयन की प्रकृति के कारण, उन्हें वापस Swift 5.0 ( DSL के विपरीत) में तैनात नहीं किया जा सकता है या प्रॉपर्टी-रैपर ), और क्योंकि iOS 13 सबसे शुरुआती iOS SDK है जिसमें OS में Swift 5.1 रनटाइम है, इसलिए सवाल का जवाब नहीं है और iOS के पुराने संस्करणों पर SwiftUI और Combine का उपयोग नहीं किया जा सकता है।
जब तक, ऐप्पल स्विफ्ट 5.1 रनटाइम (या भविष्य के रिलीज़) को बंडल करने का एक तरीका प्रदान करता है, जैसे कि वह पहले स्विफ्ट संस्करणों के साथ करता था, लेकिन चूंकि यह ऐप-आकार बढ़ाएगा और पूरे सिस्टम में फिर से ओवरहेड जोड़ देगा, मुझे इस पर संदेह है। कभी भी।
स्विफ्ट 5.1 अभी तक जारी नहीं किया गया है और SwiftUI
इसमें अपारदर्शी रिटर्न प्रकार , डीएसएल , प्रॉपर्टीडेलेगेट (डब्ल्यूडब्ल्यूडीसी के रूप में प्रॉपर्टीवेयर ) और आदि जैसी सुविधाओं का उपयोग किया गया है , जो केवल स्विफ्ट 5.1 में उपलब्ध होंगे । चूंकि स्विफ्ट 5 द्विआधारी स्थिर है, मुझे लगता है कि Xcode11 के अंदर एम्बेडेड स्विफ्ट-फ्रेमवर्क का उपयोग करना संभव नहीं था, इसलिए उन्होंने कोको के कोर में इन सुविधाओं को फिर से लागू किया है और उन्हें iOS13 + के रूप में चिह्नित किया है जब तक कि स्विफ्ट 5.1 जारी नहीं हो जाता।
मेरी धारणाएं इस तथ्य पर आधारित हैं कि, ऑर्डर किए गए संग्रह डिफिंग और DSL स्विफ्ट 5.1 में उपलब्ध होने जा रहे हैं और Xcode या Apple के इको-सिस्टम के साथ कोई संबंध नहीं हैं, लेकिन वे भी चिह्नित हैं @available(iOS13,...)
। इसका मतलब यह है कि उन्हें iOS उपलब्धता विशेषता के साथ स्विफ्ट 5.1 सुविधाओं का उपयोग करके सब कुछ चिह्नित करना था। स्विफ्ट 5.1 के रिलीज़ होते ही उनमें से कुछ को हटा दिया जाएगा, लेकिन हम इस बारे में सुनिश्चित नहीं हो सकते हैं SwiftUI
और Combine
जब तक कि एप्पल अन्यथा नहीं बताता है। यह डीएसएल के प्रस्ताव में भी उल्लिखित है :
कार्यान्वयन: पीआर । ध्यान दें कि Xcode डेवलपर पूर्वावलोकन में कार्यान्वयन यहां वर्णित की तुलना में कुछ सरल परिवर्तन का उपयोग करता है। लिंक्ड पीआर पूर्वावलोकन में कार्यान्वयन को दर्शाता है लेकिन इस प्रस्ताव से मेल खाने के लिए सक्रिय विकास के अधीन है।
इसलिए जब स्विफ्ट 5.1 जारी किया जाता है तो पिछड़ी असंगतता सीमा को हटाया जा सकता है, लेकिन इसे वास्तव में Apple टीम द्वारा स्पष्ट करने की आवश्यकता है ।
नहीं। SwiftUI को iOS 13 या बाद में, macOS 10.15 या बाद में, TVOS 13 या बाद के संस्करण, या 6 या उससे अधिक के तैनाती लक्ष्य की आवश्यकता है। फ्रेमवर्क में कई नए प्रकार शामिल हैं जो OS के पुराने संस्करणों पर मौजूद नहीं हैं।
यदि आप iPhone का समर्थन करने के लिए शूटिंग कर रहे हैं और iPad नहीं है तो आप शायद उम्मीद कर सकते हैं कि अधिकांश उपयोगकर्ता 12-18 महीनों (रिलीज की तारीख के साथ) में iOS 13 में अपग्रेड करेंगे। शायद 85-90%? (मुझे लगता है कि इस बिंदु पर Apple ने कहा कि अभी भी 15% लोग iOS 12 पर नहीं हैं) यह अभी भी काफी समय है, हालांकि जहाँ आप अभी तक स्विफ्टयूआई ऐप को तैनात करने में सक्षम नहीं हैं या बहुत सारे उपयोगकर्ताओं को अलग करने का जोखिम उठाते हैं।
यह भी निर्भर करता है कि अन्य 10-15% क्या है, इसका मतलब है कि आपके लिए बहुत सारे उपयोगकर्ता (और $ $) टेबल पर छोड़ दिए गए हैं।
यदि आप iPad का समर्थन कर रहे हैं, तो इसके और अधिक मुश्किल है क्योंकि लोग अक्सर अपने iPads को अपग्रेड नहीं करते हैं। 3 जी और 4 वीं पीढ़ी के आईपैड के साथ बहुत से आईपैड 2s अभी भी जंगली में हैं, जिसमें केवल 10.3.3 हैं और अब और अपग्रेड नहीं कर सकते हैं। जब लोग पूरी तरह से ठीक काम करते हैं, तो लोग बस एक नए iPad के लिए $ 400 - $ 1,000 के बीच उठने और जाने का भुगतान नहीं करते हैं।
वहाँ हमेशा कमरे और अनुप्रयोग को अद्यतन करने के लिए एक की जरूरत है, यह बेहतर बनाने, कीड़े फिक्सिंग, कि जरूरी नहीं कि iOS 13. के साथ कुछ करना है, यानी एक बग को खोजने से पहले जिसके बारे में आपको पता नहीं था कि बहुत से उपयोगकर्ता नाखुश हैं। नवीनतम iOS संस्करण पर नहीं। और हम उद्यम / कॉर्पोरेट ग्राहकों के बारे में भी बात नहीं कर रहे हैं जो बहुत सी देव दुकानों का समर्थन करते हैं। उस क्षेत्र में विभिन्न कारणों से iOS अपडेट पर बहुत अधिक पुशबैक करता है।
इससे पहले कि आप iOS 13 और स्विफ्टयूआई के बारे में पूरी तरह से उत्साहित हो जाएं (जो आपको पूरी तरह से चाहिए क्योंकि इसका कमाल), असली दुनिया में वापस, सिलिकॉन वैली के बाहर, यह बिल्कुल वैसा ही नहीं है जैसा कि औसत उपभोक्ता को उम्मीद है और आपको समर्थन करने की आवश्यकता होगी पुराने उपकरणों और की जरूरत है क्योंकि theres सिर्फ बहुत से लोगों को आप विमुख हो जाएगा।
Apple प्रलेखन के आधार पर यह केवल iOS 13 के साथ शुरू होता है, दुर्भाग्य से।
यह iOS 13+ के साथ संगत है। यहाँ इसके प्रलेखन का लिंक दिया गया है।
https://developer.apple.com/documentation/swiftui/
यहां तक कि Xcode 10 भी इसका समर्थन नहीं करता है। आपको Xcode 11 का उपयोग करने की आवश्यकता है जो बीटा में है (Jun 3 2019)। https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
केवल ios 13 या उसके बाद के लिए काम करता है
आप अभी भी SwiftUI
उपयोग करके अपना कोड संलग्न कर सकते हैं
@available(iOS 13.0, *)
अगर आप अभी भी Xcode 11 के नीचे Xcode का उपयोग कर रहे हैं और SwiftUI कोड है, तो आप इसे लपेट सकते हैं
#if canImport(SwiftUI)
...
#endif
Xcode 11 के नीचे Xcode के साथ संकलन करने पर यह समस्या को ठीक कर सकता है
जैसा कि सभी ने कहा है, यह पुराने iOS संस्करणों के साथ पीछे की ओर संगत नहीं होगा। लेकिन यह देखते हुए कि Apple के पास लगातार अपने नवीनतम iOS का उच्च इंस्टॉल बेस है, और यह भी कि iOS 13 के लिए iPhone 6S या बाद में, iPad Air 2 या बाद में, नए iPad मिनी 4 और iPhone SE की आवश्यकता होती है। उपयोगकर्ताओं के विशाल बहुमत iOS 13 को स्थापित करने और सुंदर SwiftUI एप्लिकेशन का आनंद लेने में सक्षम होंगे।
जैसा कि मेरे उल्लेख से पहले सभी लोग, यह बहुत स्पष्ट है कि इसे iOS 13 या बाद के संस्करण की आवश्यकता होगी। लेकिन एक नए iOS डेवलपर के रूप में, मैं इस बात को लेकर चिंतित था कि मुझे UIKit की तुलना में स्विफ्टयूआई को किस हद तक अपनाना चाहिए। मैंने पहले से ही UIKit के साथ कुछ छोटे प्रोजेक्ट बनाए, और कहीं न कहीं इसके साथ आगे बढ़ा।
लेकिन जैसा कि स्विफ्टयूआई ने शुरू किया, उनके बीच गठबंधन कैसे किया जाए। निम्नलिखित लिंक में लेख सभी संदर्भ में डालता है: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
अब मेरी एकमात्र चिंता यह है कि मैंने Xcode 11 के साथ देखा कि एक Xcode प्रोजेक्ट स्टोरीबोर्ड और स्विफ्टयूआई दोनों को संयोजित नहीं कर सकता है।
अफसोस की बात है कि, SwiftUI को केवल iOS 13 और इसके बाद के संस्करण की अनुमति है। इसे iOS 13 फ्रेमवर्क में पेश किया गया था। IOS 13 से पहले, सब कुछ ओबज-सी फ्रेमवर्क (स्विफ्ट सहित) का उपयोग करके बनाया गया था।
देव प्रलेखन के दाईं ओर, यह iOS, macOS, tvOS, watchOS, आदि के समर्थित संस्करणों को दिखाता है।
https://developer.apple.com/documentation/swiftui/
उम्मीद है की यह मदद करेगा!