स्विफ्ट कोड निष्पादन का प्रवेश बिंदु क्या है?


105

main()स्विफ्ट में कोई विधि नहीं है । कार्यक्रम को कहीं से क्रियान्वयन शुरू करना चाहिए। तो स्विफ्ट कोड निष्पादन का प्रवेश बिंदु क्या है और यह कैसे तय किया जाता है?

जवाबों:


94

एक सादे स्विफ्ट मॉड्यूल में प्रवेश बिंदु नामक फ़ाइल में मॉड्यूल है main.swiftmain.swiftएकमात्र फ़ाइल है जिसे शीर्ष स्तर पर अभिव्यक्ति और कथन की अनुमति है (मॉड्यूल में अन्य सभी स्विफ्ट फ़ाइलों में केवल घोषणाएं हो सकती हैं)।

कोको टच एंट्री पॉइंट को चिह्नित करने के लिए फ़ाइल के बजाय कार्यान्वयन पर @UIApplicationMainविशेषता का उपयोग करता है । कोको एक न्यूनतम फ़ाइल का उपयोग करता था जिसे बस कहा जाता था , लेकिन जैसा कि Xcode 6.1 के कार्यान्वयन पर विशेषता का उपयोग करता है ।UIApplicationDelegatemain.swiftmain.swiftNSApplicationMain@NSApplicationMainNSApplicationDelegate


4
मैंने एक नया xcode प्रोजेक्ट बनाया है और मैं main.swiftकहीं भी फ़ाइल खोजने में सक्षम नहीं हूँ । इस फ़ाइल का स्थान क्या है?
सेल्विन

कोको और कोको टच अनुप्रयोगों main.swiftमें सहायक फ़ाइल समूह में है, और बस कॉल करने के लिए कॉन्फ़िगर किया गया है NSApplicationMain
नथन

4
कोई नहीं वहाँ सहायक फ़ाइलों के समूह में नहीं है। यह परियोजना में कहीं भी नहीं है।
सेल्विन

1
क्षमा करें, मैं कोको टच के बारे में गलत था लेकिन कोको के बारे में सही था। मेरा अद्यतन उत्तर देखें
नथन '

बेशक, कोको टच में भी आप बना सकते हैं और उपयोग कर सकते हैं main.swift
सुल्तान

40

में AppDelegate.swiftफ़ाइल आप देख सकते हैं @UIApplicationMain
AppDelegate प्रारंभिक प्रविष्टि फ़ाइल है।

मूल रूप से: main.mऔर AppDelegate.mथोड़े Swiftसिर्फ में विलय कर रहे हैंAppDelegate.swift


2
@nathan उन्होंने iOS8 को टैग किया , जो इसके लिए जाता है Cocoa-Touch, मेरा जवाब सही है।

अच्छा, मैं सोच रहा था कि मैं स्विफ्ट करने के लिए main.m कैसे बदल सकता हूं और मुझे एक भी चीज़ नहीं मिली।
जलील

28

आप फ़ाइल और प्रारंभ को पढ़ना चाह सकते हैं

अपवाद "main.swift" नाम की एक विशेष फ़ाइल है, जो खेल के मैदान की फ़ाइल की तरह व्यवहार करता है, लेकिन आपके ऐप के स्रोत कोड के साथ बनाया गया है। "Main.swift" फ़ाइल में शीर्ष-स्तरीय कोड हो सकता है, और आदेश-निर्भर नियम भी लागू होते हैं। वास्तव में, "main.swift" में चलने वाली कोड की पहली पंक्ति को कार्यक्रम के मुख्य प्रविष्टि बिंदु के रूप में परिभाषित किया गया है। यह न्यूनतम स्विफ्ट प्रोग्राम को सिंगल लाइन बनाने की अनुमति देता है - जब तक कि वह लाइन "main.swift" में हो।

Xcode में, मैक टेम्प्लेट में "main.swift" फ़ाइल शामिल करने के लिए डिफ़ॉल्ट है, लेकिन iOS ऐप्स के लिए नए iOS प्रोजेक्ट टेम्प्लेट के लिए डिफ़ॉल्ट एक नियमित स्विफ्ट फ़ाइल में @UIApplicationMain जोड़ना है। यह कंपाइलर आपके iOS ऐप के लिए एक मुख्य एंट्री पॉइंट को संश्लेषित करने का कारण बनता है, और "main.swift" फ़ाइल की आवश्यकता को समाप्त करता है।

वैकल्पिक रूप से, आप ऑब्जेक्टिव-सी में मुख्य रूप से लिखे गए कार्यान्वयन में लिंक कर सकते हैं, जब सामान्य रूप से ऑब्जेक्टिव-सी से स्विफ्ट तक की परियोजनाओं का माइग्रेशन होता है।


3
मैंने इसे एक बेहतर और उच्च स्तरीय व्याख्या के रूप में पाया कि आईओएस में प्रवेश बिंदु कैसे सेट किया जाता है।
स्टीवन

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

1

स्विफ्ट ऐप्स में विशेषताएँ हैं:

  • @UIApplicationMain (कोको टच)
  • @NSApplicationMain (कोको)

कि स्विफ्ट कंपाइलर को बताएं कि एप्लिकेशन का एंट्री पॉइंट कहां है।

हुड के तहत स्विफ्ट कंपाइलर क्या करता है कि यह एक mainफ़ंक्शन बनाता है , जो मूल रूप से ऑब्जेक्टिव-सी ऐप्स में समान दिखता है और इस पद्धति को ऐप के प्रवेश बिंदु (एक पहला तरीका जिसे एप्लिकेशन प्रक्रिया शुरू होने पर कहा जाता है) के रूप में मानता है।

यदि आप इस बारे में अधिक पढ़ना चाहते हैं कि स्विफ्ट कंपाइलर Mainविशेषताओं के साथ क्या करता है, तो ओएस कैसे जानता है कि एप्लिकेशन का प्रवेश बिंदु कहां है, मैं आपको इस लेख को पढ़ने के लिए प्रोत्साहित करता हूं: आईओएस ऐप एंट्री पॉइंट को समझना


1

स्विफ्ट 5.3 में एक नई @mainविशेषता है जो आपको यह नियंत्रित करने देती है कि आपका प्रवेश बिंदु आपके प्रोजेक्ट में कहां है, बजाय इसके main.swift। केवल एक मुख्य प्रविष्टि हो सकती है और आपके पास एक main.swiftफ़ाइल और एक विशेषता नहीं हो सकती है @main। अधिक जानकारी के लिए https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md देखें ।

@main
struct App {
    static func main() {
        print("Starting.")
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.