"@UIApplicationMain" का क्या अर्थ है?


82

मैंने अभी अपनी पहली स्विफ्ट परियोजना बनाई है, AppDelegate.swiftएक वर्ग घोषणा के ऊपर एक पंक्ति है - यह क्यों है ?!

...
import UIKit
import CoreData

@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
... 

जवाबों:


135

@UIApplicationMainस्विफ्ट में विशेषता बदल देता है तुच्छ main.mफ़ाइल ऑब्जेक्टिव-सी परियोजनाओं (जिसका उद्देश्य को लागू करने की है में पाया mainसमारोह सभी सी कार्यक्रमों और कॉल के लिए प्रवेश बिंदु है कि UIApplicationMainकोको टच रन पाश और एप्लिकेशन के बुनियादी ढांचे बंद लात के लिए)।

ऑब्जेक्टिव-सी में, प्रति-एप्लिकेशन कॉन्फ़िगरेशन का मुख्य (हेह) बिट जो UIApplicationMainफ़ंक्शन प्रदान करता है, वह आपके ऐप के कस्टम वर्गों में से एक को साझा UIApplicationऑब्जेक्ट के प्रतिनिधि के रूप में नामित कर रहा है । स्विफ्ट में, आप आसानी से उस वर्ग की घोषणा में @UIApplicationMainविशेषता जोड़कर इस वर्ग को नामित कर सकते हैं । ( UIApplicationMainयदि आप के पास कारण हो तो भी आप सीधे फ़ंक्शन को आमंत्रित कर सकते हैं । स्विफ्ट में आपने उस कॉल को किसी main.swiftफ़ाइल में शीर्ष-स्तरीय कोड में डाल दिया है ।)

@UIApplicationMainकेवल iOS के लिए है। OS X में, एप्लिकेशन प्रतिनिधि पारंपरिक रूप से Info.plist (ObjC के लिए स्विफ्ट के लिए समान) द्वारा निर्दिष्ट मुख्य nib फ़ाइल में सेट है - लेकिन OS X स्टोरीबोर्ड के साथ कोई मुख्य nib फ़ाइल नहीं है, इसलिए @NSApplicationMainवहां भी यही काम होता है।


1
द स्विफ्ट प्रोग्रामिंग लैंग्वेज में पेज 58 पर मैंने एट्रीब्यूट्स सेक्शन पाया, जो दिलचस्प था।
जानोस

1
मैंने अपने उत्तर में डॉक्स उद्धृत किया है, लेकिन अभी तक इस विशेषता के लिए कोई भी प्रतीत नहीं होता है। गुण पेज आप पाया जहां आप शायद है होगा यह पाते हैं।
रिकस्टर

3
UIApplicationMainअब के लिए एक विवरण है। developer.apple.com/library/ios/documentation/Swift/Conceptual/…
क्विन टेलर

2
अपने अंतिम वाक्य को फिर से नोट करें, कि OS X का समतुल्य @NSApplicationMain
Bill

@UIApplicationMain TVOS के लिए भी है
Shaked Sayag

7

@UIApplicationMain विशेषता शुरू करने के लिए आपके आवेदन के लिए main.m फ़ाइल और प्रविष्टि बिंदु का प्रतिस्थापन है।

एक और बात यह है कि आपका कार्यक्रम इस @UIApplicationMain के बिना काम कर सकता है। आपको केवल टिप्पणी करने की आवश्यकता है। वह आपके आवेदन का प्रवेश बिंदु होगा

import Foundation
class FLApplication: UIApplication
{
    override func sendEvent(event: UIEvent!)
    {
        println("Entry Point") // this is an example
    }
}

1
अगर मैं ऐसा करता हूं, तो यह संकलन करता है और चलता है, लेकिन ऐप इंस्टॉल करने के बाद समाप्त हो जाता है और SendEvent को कभी नहीं बुलाया जाता है। तो क्या? :)
स्टुफ़ एमसी

यहाँ अधिक जानकारी: stackoverflow.com/questions/24020000/… - लेकिन फिर से मैं सेंड इवन में नहीं उतरता ...
mc

@StuFFmc इस जानकारी के लिए धन्यवाद। SendEvent मेथड मेरे लिए भी नहीं बुलाया गया।
डैलोस

2
Foundationआयात, FLApplication, उपवर्ग के किसी भी उपयोग की घोषणा के बिना यादृच्छिक उपवर्गीकरण ... क्षमा करें, लेकिन इस जवाब से कोई भी समझ में पहला वाक्य के अलावा बनाता है।
पंचांग

7

AppDelegate.swift स्रोत फ़ाइल के दो मुख्य कार्य हैं:

  • यह आपके ऐप में प्रवेश बिंदु और एक रन लूप बनाता है जो आपके ऐप में इनपुट ईवेंट वितरित करता है। यह कार्य UIApplicationMain विशेषता (@UIApplicationMain) द्वारा किया जाता है , जो फ़ाइल के शीर्ष की ओर दिखाई देता है। UIApplicationMain एक एप्लिकेशन ऑब्जेक्ट बनाता है जो ऐप के जीवन चक्र और ऐप प्रतिनिधि ऑब्जेक्ट को प्रबंधित करने के लिए जिम्मेदार है।

  • यह AppDelegate वर्ग को परिभाषित करता है , ऐप प्रतिनिधि ऑब्जेक्ट के लिए खाका। एप्लिकेशन प्रतिनिधि वह विंडो बनाता है जहां आपके ऐप की सामग्री खींची जाती है और ऐप के भीतर राज्य के परिवर्तनों का जवाब देने के लिए एक स्थान प्रदान करता है। AppDelegate वर्ग वह जगह है जहाँ आप अपना कस्टम ऐप-स्तरीय कोड लिखते हैं।


अरे @Manju ....... मैंने अपने UIApplication main को TimerUiApplication के रूप में ओवरराइड किया है ............. मेरा इसमें एक वेरिएबल है .......... मैं कैसे करूँ मेरे uiViewController से मेरे UIApplication के उस चर को संशोधित करें …………………
Cloy

3

अब जब स्विफ्ट प्रलेखन अद्यतन किया गया है, तो यहां प्रासंगिक मार्ग दिया गया है:

NSApplicationMain

यह इंगित करने के लिए कि यह अनुप्रयोग प्रतिनिधि है, वर्ग के लिए इस विशेषता को लागू करें। इस विशेषता का उपयोग करना NSApplicationMain ( : :) फ़ंक्शन को कॉल करने और प्रतिनिधि वर्ग के नाम के रूप में इस वर्ग के नाम को पारित करने के बराबर है ।

यदि आप इस विशेषता का उपयोग नहीं करते हैं, तो NSApplicationMain ( : :) फ़ंक्शन को कॉल करने वाले मुख्य () फ़ंक्शन के साथ एक main.swift फ़ाइल की आपूर्ति करें । उदाहरण के लिए, यदि आपका ऐप अपने मूल वर्ग के रूप में NSApplication के कस्टम उपवर्ग का उपयोग करता है, तो इस विशेषता का उपयोग करने के बजाय NSApplicationMain फ़ंक्शन को कॉल करें।

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html


0

@UIApplicationMain एक विशेषता वर्ग -declared below- के लिए आवेदन किया है AppDelegate इस वर्ग के बारे में अधिक जानकारी प्रदान करने के लिए,।

इस स्थिति में, विशेषता @UIApplicationMain इंगित करती है कि क्लास AppDelegate आपके ऐप का एप्लिकेशन प्रतिनिधि है।


0

UIApplicationMain इस विशेषता को वर्ग में लागू करने के लिए इंगित करता है कि यह अनुप्रयोग प्रतिनिधि है। इस विशेषता का उपयोग करना UIApplicationMain फ़ंक्शन को कॉल करने और प्रतिनिधि वर्ग के नाम के रूप में इस वर्ग के नाम को पारित करने के बराबर है। (स्रोत)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.