क्या स्विफ्ट-आधारित एप्लिकेशन OS X 10.9 / iOS 7 और उससे कम पर काम करते हैं?


616

क्या स्विफ्ट-आधारित एप्लिकेशन काम करेंगे OS X 10.9 (Mavericks) / iOS 7 और उससे कम ?

उदाहरण के लिए, मेरे पास मशीन चल रही है OS X 10.8 (माउंटेन लायन) , और मैं सोच रहा हूं कि क्या मैं स्विफ्ट में एक एप्लिकेशन लिखूंगा जो उस पर चलेगा।

या क्या मुझे मैक ओएस का उपयोग करके एक स्विफ्ट एप्लिकेशन बनाना चाहिए?


51
मान लें कि स्विफ्ट को एक "सामान्य" निष्पादन योग्य में संकलित किया गया है और यह मानते हुए कि ओएस में स्विफ्ट विशिष्ट रनटाइम लाइब्रेरी की आवश्यकता नहीं है, तो हाँ, इसे पुराने सिस्टम पर चलना चाहिए। हम अभी तक नहीं जानते। Xcode 6 डाउनलोड करें और इसे आज़माएं।
ताम्र

12
एक आधिकारिक उत्तर संघ राज्य के वीडियो में मिलेगा।
स्टीवन फिशर

3
@rmaddy FWIW: WWDC में, स्विफ्ट प्रस्तुति में यह सबसे स्पष्ट रूप से कहा गया था कि स्विफ्ट और ऑब्जेक्टिव-सी में एक ही रनटाइम है।
11684

1
यह सार्वजनिक ज्ञान है और यहां तक ​​कि मुख्य में उल्लेख किया गया था कि यह उन ऑपरेटिंग सिस्टमों पर चलता है।
rhummelmose

3
यह प्रश्न वही है जो भ्रमण पृष्ठ पर एक उदाहरण के रूप में उपयोग किया जाता है ।
डोनाल्ड डक

जवाबों:


520

मैंने सिर्फ आपके लिए इसका परीक्षण किया है, स्विफ्ट एप्लिकेशन मानक बायनेरिज़ में संकलित हैं और इसे ओएस एक्स 10.9 और आईओएस 7 पर चलाया जा सकता है।


परीक्षण के लिए इस्तेमाल किया गया सरल स्विफ्ट आवेदन:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "I'am a test label"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}

13
देखें stackoverflow.com/questions/24007050/… - यह इस उत्तर के साथ संघर्ष करता है (कम से कम "या इससे भी कम" भाग)।
रैम्डी

14
मैंने केवल iOS 7.0 और OS X 10.9 का परीक्षण किया है। जैसा कि उत्तर में कहा गया है।
लिएन्ड्रोस

@Leandros, var कीवर्ड का उपयोग करके, हमें इस लाइन में दो बार UIViewController टाइप करने की आवश्यकता क्यों है "var कंट्रोलर: UIViewController = UIViewController ()"? क्या var जावास्क्रिप्ट / C # (यदि नहीं, तो बहुत दुखद) के समान नहीं है? क्या यह कास्टिंग है, लेकिन ऑब्जेक्ट प्रकार समान चिह्न के दोनों किनारों पर समान हैं?
टीएन डू

3
@TienDo मेरे पास कोई स्विफ्ट अनुभव नहीं है, लेकिन मुझे लगता है UIViewControllerकि बृहदान्त्र के प्रकार का प्रतिनिधित्व करने के बाद पहला है और दूसरी घटना के बाद =साइन कंस्ट्रक्टर को कॉल करता है (चर को इनिशियलाइज़ करता है)।
कॉमफ्रिक

2
IOS के लिए: Xcode 6 बीटा में, iOS 6 तक परिनियोजन लक्ष्य हैं। मैंने उन सभी का परीक्षण किया, काम किया। कुछ उत्तर हैं जो समान हैं।
ySiggen

197

स्विफ्ट कोड को OS X 10.9 और iOS 7.0 पर तैनात किया जा सकता है। यह आमतौर पर पुराने ओएस संस्करणों पर लॉन्च में दुर्घटनाग्रस्त हो जाएगा।


4
ग्रेग, सवालों के जवाब देने के लिए यहां आने के लिए धन्यवाद। क्या आप थोड़ा सा कह सकते हैं कि 10.8-> 10.9 और 6.x-> 7.0 क्या बदल गया है जो स्विफ्ट से उत्पन्न कोड को चलाने की अनुमति देता है?
इवान वूइका

20
स्विफ्ट कक्षाओं को चिह्नित करने के लिए उद्देश्य-सी मेटाडेटा में स्विफ्ट कुछ बिट्स सेट करता है। स्विफ्ट के आगमन की तैयारी में इन बिट्स को अनदेखा करने के लिए OS X 10.9 और iOS 7.0 में libobjc को बदल दिया गया था। पुराने OS संस्करण इन बिट्स से भ्रमित होंगे।
ग्रेग पार्कर

9
मैं चाहता हूँ ज्यादा अगर एप्पल बना रही स्विफ्ट (OSX 10.7 के बाद से कम से कम) भी पुराने प्लेटफार्मों पर काम ऐप्स पर विचार करेगा सराहना करते हैं। कारण यह है कि हमारे पास अभी भी इस OS के साथ कई ग्राहक हैं, इसलिए हम 10.9 वर्षों के लिए स्विफ्ट के साथ विकास शुरू नहीं कर सकते हैं यदि 10.9 न्यूनतम समर्थित ओएस है!
माइक लिस्चके

2
@GregParker स्विफ्ट 2 के लिए इस उत्तर को अपडेट करने का कोई भी मौका, चाहे रनटाइम आवश्यकताएं बदल गई हों या नहीं?
एंड्री टारनटोसव

1
स्विफ्ट-निर्मित निष्पादन योग्य के लिए न्यूनतम समर्थित परिनियोजन लक्ष्य iOS 7.0 और OSX 10.9 रहते हैं। IOS 7 / OSX 10.9 या पूर्व में अपग्रेड किए गए API अनुपलब्ध होंगे। निर्माण करते समय, स्विफ्ट केवल एसडीके का समर्थन करता है जो एक्सकोड में जहाज करता है।
फ्लैश शेरिडन

103

Apple ने घोषणा की है कि Swift ऐप iOS 7 और OS X Mavericks के साथ पीछे की ओर संगत होंगे। WWDC ऐप स्विफ्ट में लिखा गया है।


11
सच में WWDC स्विफ्ट में लिखा है ??
सत्येश्वरन

7
हां, WWDCC ऐप स्विफ्ट में लिखा गया है। जैसा कि उन्होंने कल कहा था।
शियाल

22
जे फ्रीमैन का दावा है अन्यथा: twitter.com/saurik/status/473785847926374400
इवान वुज़िका

2
Apple का मार्केटिंग टैक्टिक हालांकि व्यवसायों द्वारा उपयोग किया जाने वाला एक आम है। विंडोज असेंबली में लिखा था! ठीक है, केवल बूटलोडर और कुछ अन्य चीजें, लेकिन यह विधानसभा में लिखा गया था
कोल जॉनसन

4
@ IvanVučica लेकिन संगतता प्रश्न का उत्तर देने के लिए 4 कक्षाएं पर्याप्त हैं।
एलिया एन।

100

अद्यतन - Xcode 6 बीटा 4 के अनुसार

iOS 7 और OS X 10.9 न्यूनतम तैनाती लक्ष्य

स्विफ्ट कंपाइलर और Xcode अब iOS 7 या OS X Mavericks का न्यूनतम तैनाती लक्ष्य लागू करते हैं। पहले से परिनियोजन लक्ष्य सेट करने से बिल्ड विफलता होती है।

Xcode 6 रिलीज नोट से

तो मेरा पिछला उत्तर (नीचे दिखाया गया) किसी और विकास पर लागू नहीं होगा। स्विफ्ट अब iOS6 और उससे नीचे के लिए उपलब्ध नहीं होगी


IOS 6 पर एक स्विफ्ट एप्लिकेशन चलाया जा सकता है। हालांकि कई लोग कह रहे हैं कि स्विफ्ट केवल iOS 7+ और OS X 10.9+ का समर्थन करेगा, मेरे अनुभव से यह नहीं है।

मैंने iOS 6 डिवाइस में स्विफ्ट में पूरी तरह से लिखे गए एक साधारण एप्लिकेशन का परीक्षण किया है। यह पूरी तरह से ठीक काम करता है । जैसा कि ऐप्पल कहता है, स्विफ्ट कोड उद्देश्य-सी कोड के साथ द्विआधारी संगत है। यह बाइनरी बनाने के लिए एक ही कंपाइलर और रनटाइम का उपयोग करता है।

यहाँ कोड है जो मैंने परीक्षण किया है:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        let button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button.frame = CGRectMake(100, 100, 100, 50)
        button.backgroundColor = UIColor.greenColor()
        button.setTitle("Test Button", forState: UIControlState.Normal)
        button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside)

        self.view.addSubview(button)
    }

    func buttonTapped(sender: UIButton!) {
        println("buttonTapped")
    }
}

यह एक सरल अनुप्रयोग है, बस एक बटन को प्रोग्रामेटिक रूप से जोड़ना है। मेरे आवेदन में केवल दो फाइलें हैं, AppDelegate.swiftऔर ViewController.swift

इसलिए यदि आप iOS 8 एसडीके या कुछ स्विफ्ट विशिष्ट एपीआई के भाग के रूप में जोड़े गए किसी भी नए एपीआई का उपयोग नहीं कर रहे हैं (उद्देश्य एपीआई के लिए संबंधित एपीआई उपलब्ध नहीं है) तो आपका आवेदन मूल रूप से आईओएस 6 या बाद में (परीक्षण और काम) पर काम करेगा, यहां तक ​​कि iOS 5 पर (परीक्षण नहीं किया गया)। स्विफ्ट में अधिकांश एपीआई मौजूदा वस्तुनिष्ठ-सी एपीआई के प्रतिस्थापन मात्र हैं। वास्तव में वे बाइनरी में समान हैं।

नोट: स्विफ्ट ऐप्स के लिए Xcode 6 बीटा 4 के अनुसार तैनाती लक्ष्य iOS 7 या OS X 10.9 होना चाहिए (उपरोक्त अद्यतन देखें)। इसलिए स्विफ्ट अब iOS6 और उससे नीचे के लिए उपलब्ध नहीं होगी



पिछले सिस्टम अपडेट के समान, कुछ रूपरेखा / कक्षाएं बंद कर दी गई हैं और उन्हें सशर्त रूप से समर्थित होना चाहिए।
मिरियम एच।

@TienDo अर्धविराम की कोई आवश्यकता नहीं है :) भले ही आप गलती से (इसकी परंपरा) डाल दें कि कोई समस्या नहीं होगी
अनिल वर्गीज

3
लेकिन आप अभी भी अर्धविराम का उपयोग कर सकते हैं यदि आप वास्तव में चाहते हैं। एक पंक्ति में दो कथन एक अर्धविराम द्वारा अलग किए गए हैं
पॉलवुड

33

संक्षेप में:

स्विफ्ट आधारित एप्लिकेशन OS X Mavericks या iOS 7 पर उसी ऐप के साथ वापस लक्षित कर सकते हैं ।

यह कैसे संभव है ?

Xcode आपके ऐप के बंडल में एक छोटी स्विफ्ट रनटाइम लाइब्रेरी एम्बेड करता है । क्योंकि लाइब्रेरी एम्बेडेड है, आपका ऐप स्विफ्ट के एक सुसंगत संस्करण का उपयोग करता है जो अतीत, वर्तमान और भविष्य के ओएस रिलीज़ पर चलता है।

मुझे इस जवाब पर भरोसा क्यों करना चाहिए?

क्योंकि मैं यह जवाब नहीं कह रहा हूं क्योंकि एक सेब वाले ने मुझे ट्विटर में बताया या मैंने हैलो वर्ल्ड लिखा और इसका परीक्षण किया।

मैंने इसे Apple डेवलपर ब्लॉग से लिया है ।

तो आप इस पर भरोसा कर सकते हैं।


2
"छोटा" ~ 20 एमबी या कुछ और लेता है। :)
बैंगओपरेटर

1
बाइनरी में पूरे रनटाइम को शामिल करना थोड़ा फूला हुआ लग सकता है, लेकिन क्योंकि स्विफ्ट अभी भी पूरी तरह से स्थिर नहीं है, यह उनके लिए समझ में आता है कि वे डेवलपर्स को अपने स्वयं के समय में स्विफ्ट के नए संस्करण के साथ फिर से जोड़ने की अनुमति देते हैं, बजाय कुछ साझा किए गए लाइब्रेरी को अपडेट करने के। हर किसी के ऐप्स को तोड़ना। एक बार जब स्विफ्ट स्थिर हो जाती है, तो मुझे लगता है कि रनटाइम को हर चीज के साथ कहीं न कहीं, एक डाइलिब में संग्रहीत किया जाएगा।
विलियम टी फ्रूगार्ड

@WilliamTFroggard - हाँ आशा है
दुरई अमुथन

30

स्विफ्ट ऑब्जेक्टिव-सी के रूप में एक ही रनटाइम का उपयोग करता है और यहां तक ​​कि एक ही एप्लिकेशन (डब्ल्यूडब्ल्यूडीसी 2014 कीनोट के अनुसार) में साइड-बाय-साइड ऑब्जेक्टिव-सी भी रह सकता है।

इसे अंतिम जवाब खोजने के लिए Xcode 6 और नए SDK का उपयोग करके जाँच / सत्यापन करना होगा ।


1
ऐसा लगता है कि Xcode Beta 6 का उपयोग करने से आप 10.9.3 पर स्विफ्ट ऐप्स चला सकते हैं, लेकिन मुझे यकीन नहीं है कि 10.7 या 10.8 पर एक स्विफ्ट ऐप कितनी देर तक चल पाएगा?
जॉन

22

मैंने कहा कि सभी जवाब पढ़ें: नहीं, स्विफ्ट आईओएस 7 से कम के साथ काम नहीं करता है। लेकिन मैंने कहा हां , मैंने सिर्फ एक स्विफ्ट प्रोजेक्ट बनाया है जो 6.0 तैनाती लक्ष्य के साथ एक्सकोड 5 में चलता है।

  • मैं सिर्फ स्विफ्ट प्रोग्रामिंग भाषा के साथ Xcode 6 बीटा में एक डेमो प्रोजेक्ट बनाता हूं ।
  • Xcode 6 बीटा को बंद करें, और मैं Xcode 5 में इस डेमो प्रोजेक्ट को तैनाती लक्ष्य 6.0 के साथ खोलता हूं
  • और सिम्युलेटर 6.1 भी चुनें ।

फिर सिम्युलेटर 6.1 में यह परियोजना अच्छी तरह से चलती है । मेरा MacOS X 10.9.3 है , इसलिए मैंने कहा कि हाँ, यह iOS 7. से कम में चलता है । 10.9.3 Mac OS X के साथ

यहाँ यह सिम्युलेटर का एक स्क्रीनशॉट है:

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

यहाँ एक डेमो भी है


3
प्रश्न: स्विफ्ट सपोर्ट के बिना XCode-5 स्विफ्ट स्रोत का निर्माण कैसे करता है?
सुबिन सेबेस्टियन

आप simulatore स्क्रीनशॉट देख सकते हैं :) मैंने फ़ोटोशॉप में संलग्न स्क्रीनशॉट नहीं बनाया है
नितिन गोहेल

मेरा मतलब है कि मैं एक उद्देश्य सी एप्लिकेशन को तेज करने के लिए परिवर्तित किया है और जो ios 6 पर वहां मौजूद ग्राहक हैं। तो क्या स्विफ्ट ऐप काम करेगा?
मनेश शर्मा

पहले आप डेमो कोड के साथ प्रयास करें यदि वह काम करता है तो हां वह निश्चित काम करता है
नितिन

20

जबकि कोड इसकी पुष्टि करता है, Apple ने खुद कहा है कि स्विफ्ट WWDC 2014 में अपने तकनीकी कीनोट ( प्लेटफार्मों के राज्य , सत्र 102, 34 मिनट 00 सेकंड के निशान के आसपास) में iOS 7 और मावेरिक्स पर संगत होगी ।


15

स्विफ्ट एप्लिकेशन iOS 7 और इसके बाद के संस्करण बीटा 4 के नोटों में बताए गए हैं। Xcode 6 बीटा में iOS 6.0, 6.1, 7.0, 7.1, 8.0 है

प्लेटफ़ॉर्म OS X 10.9 और इसके बाद के संस्करण पर स्विफ्ट एप्लिकेशन समर्थित हैं । परिनियोजन लक्ष्य में OS X 10.4 से 10.10। मैंने 10.5 से 10.10 तक के लक्ष्य पर परीक्षण किया है, और 10.9.3 पर चल रहा है


1
मुझे लगता है कि विभिन्न तैनाती लक्ष्य अभी तक सही नहीं हैं (एक्सकोड 6 एक बीटा है)। सिर्फ इसलिए कि आप मूल्य का चयन कर सकते हैं इसका मतलब यह नहीं है कि यह काम करता है। मैंने लक्ष्य के रूप में OSX 10.7 के साथ प्रयास किया और यह काम नहीं किया। यह भी ध्यान दें कि प्लेटफार्मों के बारे में एक आधिकारिक पुष्टि ग्रेग पार्कर द्वारा ऊपर दी गई है।
माइक लिस्चके

@ माइक लिस्चके, फिर से, मुझे अपने तर्कों का समर्थन करने के लिए कई परीक्षण करने पड़े। और मैं ओएस एक्स ऐप चला सकता हूं जब मैं तैनाती लक्ष्य 10.7 का चयन करता हूं। लेकिन मैं इस बात की सराहना करता हूं कि आपने ओएस एक्स ऐप समर्थन का धागा लाया।
vladof81

फिर आप मेरे परिणामों की व्याख्या कैसे करेंगे? और ग्रेग पार्कर ने क्या लिखा है? मुझे बहुत खुशी होगी अगर स्विफ्ट एप्स 10.7 पर काम करेंगी लेकिन अभी तक मैंने काम करने का उदाहरण नहीं देखा है। बेशक मैं तैनाती लक्ष्य के रूप में 10.7 सेट कर सकता हूं, लेकिन इससे कोई फर्क नहीं पड़ता। एप्लिकेशन crahs।
बजे माइक लिस्चके

@ माइक लिस्चके, क्या आपने उपकरणों पर iOS ऐप का परीक्षण किया?
vladof81

1
मैंने इसे भी देखा और Xcode 6 बीटा में सभी तैनाती लक्ष्य का परीक्षण किया (उत्तर के समान)। 2 अलग-अलग परीक्षण एप्लिकेशन का उपयोग करके ठीक काम किया।
ySiggen

14

ऐसा लगता है कि स्विफ्ट एप्लिकेशन OS X 10.7 पर नहीं चलते हैं । मैंने बस एक साधारण GUI एप्लिकेशन (एक दृश्य, एक lable, एक बटन) बनाया जो Mavericks पर ठीक चलता है। आधार एसडीके 10.9 और तैनाती लक्ष्य 10.7 पर सेट है। मैंने अपने 10.7 वर्चुअल मशीन पर DerivedData फ़ोल्डर से उस एप्लिकेशन को कॉपी किया, और यह शुरू होने पर क्रैश हो जाता है, इस त्रुटि को दिखाएं:

Crashed Thread:  0

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000

Application Specific Information:
dyld: launch, loading dependent libraries

    Dyld Error Message:

  Library not loaded: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
  Referenced from: /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/../Frameworks/libswiftAppKit.dylib
  Reason: image not found

Binary Images:
       0x109c65000 -        0x109c6afff +private.Swift-Test (1.0 - 1) <649695D0-58FD-3D02-9176-2D40D4E711F2> /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/Swift-Test
       0x109c83000 -        0x109dbffff +libswift_stdlib_core.dylib (1.0 - 600.0.34.4.5) <10AAC369-9404-321D-A892-49F65856D7AF> /Users/USER/Desktop/Swift-Test.app/Contents/Frameworks/libswift_stdlib_core.dylib
...

हालाँकि यह संदेश परेशान करने वाला है, क्योंकि इस वीएम में निश्चित रूप से एक कोरग्राफिक्स लाइब्रेरी है। अन्य अनुप्रयोग जो CoreGraphics का भारी उपयोग करते हैं, ठीक काम करते हैं।


14

यह वह पोस्ट है जिसे मैंने ऐप्पल स्विफ्ट ब्लॉग से पढ़ा है, सहायक हो सकता है:

अनुप्रयोग संगतता :

यदि आप एक स्विफ्ट ऐप लिखते हैं तो आप भरोसा कर सकते हैं कि आपका ऐप भविष्य में अच्छा काम करेगा। वास्तव में, आप उसी ऐप से OS X Mavericks या iOS 7 को वापस लक्षित कर सकते हैं । यह संभव है क्योंकि Xcode आपके ऐप के बंडल में एक छोटी स्विफ्ट रनटाइम लाइब्रेरी एम्बेड करता है। क्योंकि लाइब्रेरी एम्बेडेड है, आपका ऐप स्विफ्ट के एक सुसंगत संस्करण का उपयोग करता है जो अतीत, वर्तमान और भविष्य के ओएस रिलीज़ पर चलता है।

बाइनरी संगतता और फ्रेमवर्क:

जबकि आपके ऐप की रनटाइम संगतता सुनिश्चित की जाती है, स्विफ्ट भाषा स्वयं ही विकसित होती रहेगी, और बाइनरी इंटरफ़ेस भी बदल जाएगा। सुरक्षित होने के लिए, आपके ऐप के सभी घटकों को Xcode के एक ही संस्करण और स्विफ्ट कंपाइलर के साथ बनाया जाना चाहिए ताकि यह सुनिश्चित हो सके कि वे एक साथ काम करते हैं।

इसका मतलब है कि रूपरेखा को सावधानीपूर्वक प्रबंधित करने की आवश्यकता है। उदाहरण के लिए, यदि आपकी परियोजना एम्बेडेड एक्सटेंशन के साथ कोड साझा करने के लिए चौखटे का उपयोग करती है, तो आप एक साथ चौखटे, ऐप और एक्सटेंशन बनाना चाहेंगे। द्विआधारी ढांचे पर भरोसा करना खतरनाक होगा जो स्विफ्ट का उपयोग करते हैं - विशेष रूप से तीसरे पक्ष से। जैसे ही स्विफ्ट बदलती है, वे फ्रेमवर्क आपके बाकी ऐप से असंगत हो जाएंगे। जब बाइनरी इंटरफ़ेस एक या दो साल में स्थिर हो जाता है, तो स्विफ्ट रनटाइम होस्ट ओएस का हिस्सा बन जाएगा और यह सीमा अब मौजूद नहीं होगी।


12

मैंने iPod टच (3rd gen) डिवाइस पर नंगे-हड्डी, स्विफ्ट-आधारित ऐप चलाने का परीक्षण किया। ऐसा लगता है कि स्विफ्ट-आधारित ऐप iOS 5.x के साथ काम नहीं करते हैं लेकिन करते हैं आईओएस 6.x. साथ काम

जब मैंने iOS 5.0.1 के साथ टेस्ट ऐप लॉन्च करने की कोशिश की तो डिबग लॉग में क्या दिखाया गया है:

dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftCoreGraphics.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDarwin.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDispatch.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftFoundation.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftObjectiveC.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftUIKit.dylib with errno=1
dyld: Symbol not found: _OBJC_CLASS_$_NSObject
  Referenced from: /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib
  Expected in: /usr/lib/libobjc.A.dylib
 in /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib

IOS 6.1.6 के लिए, एप्लिकेशन उन त्रुटि संदेशों को प्रदर्शित किए बिना ठीक चलता है।


12

यहाँ बहुत सारे पुराने उत्तर प्रतीत होते हैं इसलिए मैं सिर्फ स्विफ्ट टीम से आधिकारिक प्रतिक्रिया पोस्ट करना चाहता था। स्विफ्ट OS X Mavericks और iOS 7 के साथ पीछे की ओर संगत है

Apple डेवलपर स्विफ्ट ब्लॉग: ऑब्जेक्टिव-सी आईडी स्विफ्ट एनी के रूप में

जुलाई ११, २०१४

अनुकूलता

डब्ल्यूडब्ल्यूडीसी में सबसे आम प्रश्नों में से एक हमने सुना था, "स्विफ्ट के लिए संगतता कहानी क्या है?"। यह एक महान पहला विषय लगता है।

ऐप कम्पेटिबिलिटी सीधे शब्दों में कहें, अगर आप आज एक स्विफ्ट ऐप लिखते हैं और iOS 8 और OS X Yosemite रिलीज़ होने पर इसे ऐप स्टोर में इस फॉल में जमा करते हैं, तो आप भरोसा कर सकते हैं कि आपका ऐप भविष्य में अच्छा काम करेगा। वास्तव में, आप उसी ऐप से OS X Mavericks या iOS 7 को वापस लक्षित कर सकते हैं। यह संभव है क्योंकि Xcode आपके ऐप के बंडल में एक छोटी स्विफ्ट रनटाइम लाइब्रेरी एम्बेड करता है। क्योंकि लाइब्रेरी एम्बेडेड है, आपका ऐप स्विफ्ट के एक सुसंगत संस्करण का उपयोग करता है जो अतीत, वर्तमान और भविष्य के ओएस रिलीज़ पर चलता है।


11

मैंने 10.8 (एक बटन, एक लेबल पर पाठ सेट) पर एक बहुत ही सरल ऐप की कोशिश की। यह स्टार्टअप पर दुर्घटनाग्रस्त हो गया, जैसा कि ग्रेग पार्कर ने कहा था:

Dyld Error Message:
  Symbol not found: __dispatch_source_type_memorypressure
  Referenced from: /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib
  Expected in: /usr/lib/libSystem.B.dylib
in /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib

(यह 10.7 की तैनाती लक्ष्य का उपयोग कर रहा था)


10

निम्नलिखित कोड का प्रयास करें:

यह StoryBoard के बिना काम कर रहा है:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window!.backgroundColor = UIColor.whiteColor()

    // Create a nav/vc pair using the custom ViewController class

    let nav = UINavigationController()
    let vc = ViewController(nibName: "ViewController", bundle: nil)

    // Push the vc onto the nav
    nav.pushViewController(vc, animated: false)

    // Set the window’s root view controller
    self.window!.rootViewController = nav

    // Present the window
    self.window!.makeKeyAndVisible()
    return true
}

और nav.rootviewcontroller का उपयोग कैसे करें ??
एलन

8

हां, वास्तव में Apple ने घोषणा की है कि स्विफ्ट ऐप iOS 7 और OS X Mavericks के साथ पीछे की ओर संगत होंगे। इसके अलावा WWDC ऐप स्विफ्ट प्रोग्रामिंग भाषा में लिखा गया है।


8

जब स्विफ्ट फ्रेमवर्क की बात आती है। आज के लिए, Xcode संस्करण 6.1.1 (6A2008a) के साथ, यदि स्विफ्ट ढांचे को iOS 7.1, linkerer चेतावनी को लक्षित किया गया है

ld: warning: embedded dylibs/frameworks only run on iOS 8 or later.

और AppStore में आवेदन जमा नहीं किया जा सकता है। इस समस्या की जाँच करें: गतिशील पुस्तकालयों और ढाँचों को iOS 7 के साथ गुजरने से रोकने के लिए लिंट


स्विफ्ट फ्रेमवर्क के Mach-O Typeहोना चाहिए Dynamic Library, हालांकि, iOS 7 स्वीकार करता है Static Libraryकेवल।
डॉनसॉन्ग

7

त्वरित अद्यतन, 15 फरवरी, 2015 से प्रभावी , हम उस स्टोर पर ऐप सबमिट नहीं कर सकते हैं जो एक का उपयोग करके विकसित किया गया था iOS 8 से पहले एसडीके । इसलिए, इस बात को ध्यान में रखते हुए, इस मुद्दे के बारे में चिंता न करने के लिए बेहतर है क्योंकि कई लोगों ने सुझाव दिया है कि स्विफ्ट में बने ऐप को ओएस एक्स 10.9 और आईओएस 7.0 पर भी तैनात किया जा सकता है ।


क्या आप हमें कोई स्रोत प्रदान करेंगे?
बिनुस

1
बेस SDK और परिनियोजन लक्ष्य के बीच अंतर है। आपके पास iOS 9 का बेस SDK और iOS 7 का परिनियोजन लक्ष्य और iTunes Connect को सबमिट कर सकते हैं। डाउनवोटिंग क्योंकि आपने कोई स्रोत प्रदान नहीं किया है।
कोयूर

1
वर्तमान Apple दस्तावेज़ में अभी भी iOS 4.3 के लिए समर्थन का उल्लेख है: developer.apple.com/library/content/documentation/IDEs/…
C

1

उत्तर कोड-स्निपेट को Leandros द्वारा पोस्ट किया गया पुराना सा लगता है। मैंने स्विफ्ट 5 में इसे ठीक कर लिया है।

स्विफ्ट 5

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let controller = UIViewController()
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568))
    view.backgroundColor = UIColor.red
    controller.view = view

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
    label.center = CGPoint(x: 160, y: 284)
    label.textAlignment = NSTextAlignment.center
    label.text = "I'am a test label"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.