विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास · पाठ

Grand Central Dispatch (GCD)

एप्लिकेशन की प्रतिक्रियाशीलता और प्रदर्शन बेहतर करने के लिए Grand Central Dispatch से समवर्ती संचालन लागू करें।

पाठ 2, कुल 4 में से11 चरण

Grand Central Dispatch (GCD), CoddyKit पर विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

ऐप्स को प्रतिक्रियाशील बनाए रखना

क्या आपने कभी ऐसा ऐप इस्तेमाल किया है जो डेटा लोड करते समय रुक गया हो? ऐसा अक्सर मुख्य थ्रेड को अवरुद्ध करने के कारण होता है।

मुख्य थ्रेड पर सभी UI अपडेट और उपयोगकर्ता की सहभागिताएँ होती हैं। यदि आप वहाँ लंबे समय तक चलने वाला कार्य करते हैं, तो आपका ऐप प्रतिक्रिया देना बंद कर देता है।

समवर्ती निष्पादन का अर्थ है कई कार्यों को देखने में एक ही समय पर चलाना। इससे मुख्य थ्रेड खाली रहता है और उपयोगकर्ता का अनुभव सहज बना रहता है।

GCD से परिचय

Grand Central Dispatch (GCD) समवर्ती संचालनों को प्रबंधित करने के लिए Apple का शक्तिशाली निम्न-स्तरीय एपीआई है। यह C और ब्लॉक्स पर आधारित है और कार्यों को अतुल्यकालिक रूप से करना आसान बनाता है।

GCD डिस्पैच कतारों का प्रबंधन करके आपको कोड को समवर्ती रूप से चलाने में सहायता करता है। आप GCD को बताते हैं कि कौन से कार्य चलाने हैं, और यह उपलब्ध प्रोसेसर कोर पर उन्हें कब और कैसे चलाना है, यह तय करता है।

डिस्पैच कतारों को समझना

GCD कार्यों को प्रबंधित करने के लिए डिस्पैच कतारों का उपयोग करता है। कतार को ऐसे कार्यों की पंक्ति समझें, जो चलाए जाने की प्रतीक्षा कर रहे हैं।

  • क्रमिक कतारें: कार्य एक-एक करके उसी क्रम में चलते हैं, जिस क्रम में उन्हें जोड़ा गया था। प्रत्येक क्रमिक कतार अपने कार्यों को क्रम से संसाधित करती है।
  • समवर्ती कतारें: कार्य जोड़े जाने के क्रम में शुरू होते हैं, लेकिन एक ही समय पर चल सकते हैं। पूरा होने का क्रम निश्चित नहीं होता।

UI का सबसे अच्छा साथी

हर iOS ऐप्लिकेशन में मुख्य डिस्पैच कतार नाम की एक विशेष क्रमिक कतार होती है। सभी UI अपडेट इसी पर होने चाहिए।

यदि आप पृष्ठभूमि थ्रेड से UI अपडेट करने का प्रयास करते हैं, तो आपका ऐप क्रैश हो सकता है या अप्रत्याशित व्यवहार कर सकता है। UI में बदलावों के लिए हमेशा मुख्य कतार पर वापस जाएँ।

आप इसे dispatch_get_main_queue() का उपयोग करके प्राप्त करते हैं।

सिस्टम की पृष्ठभूमि सहायक कतारें

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

इनमें सेवा गुणवत्ता (QoS) क्लास के आधार पर अंतर होता है, जो कार्यों की प्राथमिकता बताती है:

  • .userInteractive: UI से संबंधित, सर्वोच्च प्राथमिकता।
  • .userInitiated: उपयोगकर्ता द्वारा अनुरोधित कार्य।
  • .utility: लंबे समय तक चलने वाले, गैर-तात्कालिक कार्य।
  • .background: रखरखाव कार्य, सबसे कम प्राथमिकता।

पृष्ठभूमि कार्य आसान बनाएँ

GCD का उपयोग करने का सबसे सामान्य तरीका dispatch_async है। यह फ़ंक्शन किसी कार्य (कोड के एक ब्लॉक) को कतार में जोड़कर तुरंत लौट आता है, जिससे कॉल करने वाला कोड अपना निष्पादन जारी रख सकता है।

इसके बाद कार्य पृष्ठभूमि में एक अलग थ्रेड पर चलता है। यह उन संचालनों के लिए उपयुक्त है, जिन्हें मुख्य थ्रेड को अवरुद्ध करने की आवश्यकता नहीं होती, जैसे नेटवर्क अनुरोध या भारी गणनाएँ।

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    NSLog(@"1. Program starts.");

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      NSLog(@"3. Doing some background work...");
      [NSThread sleepForTimeInterval:1.0]; // Simulate work
      NSLog(@"4. Background work finished.");
    });

    NSLog(@"2. Program continues immediately after dispatch_async.");
    [NSThread sleepForTimeInterval:2.0]; // Keep main thread alive
  }
  return 0;
}

किसी कार्य की प्रतीक्षा करना

जहाँ dispatch_async गैर-अवरोधक संचालनों के लिए उपयोगी है, वहीं कभी-कभी आगे बढ़ने से पहले किसी कार्य के पूरा होने की प्रतीक्षा करनी पड़ती है। ऐसे में dispatch_sync काम आता है।

dispatch_sync किसी कार्य को कतार में जोड़ता है और उस कार्य का निष्पादन पूरा होने तक वर्तमान थ्रेड को रोक देता है। सावधान रहें: वर्तमान कतार पर कभी भी dispatch_sync कॉल न करें, क्योंकि इससे गतिरोध उत्पन्न होगा!

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    NSLog(@"1. Program starts.");

    dispatch_queue_t mySerialQueue = dispatch_queue_create("com.coddykit.myserialqueue", DISPATCH_QUEUE_SERIAL);

    dispatch_sync(mySerialQueue, ^{
      NSLog(@"2. This synchronous task runs now.");
      [NSThread sleepForTimeInterval:0.5];
    });

    NSLog(@"3. Program continues AFTER the synchronous task completes.");
  }
  return 0;
}

सहज UI अपडेट

iOS ऐप्स में एक सामान्य तरीका यह है कि लंबे समय तक चलने वाला कार्य पृष्ठभूमि में किया जाए और उसके पूरा होने पर UI अपडेट किया जाए। इससे UI रुकता नहीं है।

इसके लिए पृष्ठभूमि कार्य को वैश्विक समवर्ती कतार में भेजें और फिर UI अपडेट कार्य को मुख्य कतार में भेजें।

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    NSLog(@"1. App starts, fetching data...");

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      NSLog(@"2. Performing heavy data fetch on background thread...");
      [NSThread sleepForTimeInterval:1.5]; // Simulate network call or heavy computation
      NSString *fetchedData = @"User Data Loaded!";

      dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"3. Data fetched! Updating UI on main thread: %@", fetchedData);
        // In a real app, you'd update a UILabel or UIImageView here.
      });
    });

    NSLog(@"4. App remains responsive while data fetches.");
    [NSThread sleepForTimeInterval:2.0]; // Keep main thread alive
  }
  return 0;
}

बाद में कार्य निर्धारित करना

कभी-कभी आपको किसी कार्य को एक निश्चित विलंब के बाद चलाने के लिए निर्धारित करना पड़ता है। GCD इसके लिए dispatch_after उपलब्ध कराता है।

ध्यान रखें कि dispatch_after वास्तविक-समय टाइमर नहीं है। यह केवल न्यूनतम विलंब के बाद किसी ब्लॉक को निर्दिष्ट कतार में जोड़ता है। कार्य के चलने का सटीक समय कतार की गतिविधि पर निर्भर करता है।

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    NSLog(@"1. Program starts.");
    NSTimeInterval delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));

    dispatch_after(popTime, dispatch_get_main_queue(), ^{
      NSLog(@"2. This message appears after 2 seconds.");
    });

    NSLog(@"3. Program continues immediately, waiting for delayed task.");
    [NSThread sleepForTimeInterval:3.0]; // Keep main thread alive
  }
  return 0;
}

GCD की जाँच

आइए GCD की आपकी समझ की जाँच करें।

GCD का सारांश

बहुत अच्छा! आपने Grand Central Dispatch की मूल बातें सीख ली हैं।

  • GCD समवर्ती कार्यों को प्रबंधित करके आपके ऐप को प्रतिक्रियाशील बनाए रखने में सहायता करता है।
  • डिस्पैच कतारें (क्रमिक और समवर्ती) कार्यों के निष्पादन को नियंत्रित करती हैं।
  • मुख्य कतार UI अपडेट के लिए होती है और इसे हमेशा dispatch_async के माध्यम से एक्सेस किया जाता है।
  • वैश्विक समवर्ती कतारें पृष्ठभूमि कार्यों के लिए होती हैं।
  • dispatch_async कार्यों को अवरुद्ध किए बिना चलाता है, जबकि dispatch_sync कार्यों की प्रतीक्षा करता है।

उच्च-प्रदर्शन और प्रतिक्रियाशील iOS ऐप्लिकेशन बनाने के लिए GCD में दक्षता प्राप्त करना बहुत महत्वपूर्ण है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Objective-C सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “Grand Central Dispatch (GCD)” पाठ निःशुल्क है?

हाँ—“Grand Central Dispatch (GCD)” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Grand Central Dispatch (GCD)” में मैं क्या सीखूँगा?

एप्लिकेशन की प्रतिक्रियाशीलता और प्रदर्शन बेहतर करने के लिए Grand Central Dispatch से समवर्ती संचालन लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“Grand Central Dispatch (GCD)” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. API कॉल के लिए NSURLSession
  2. Grand Central Dispatch (GCD)
  3. जटिल कार्यों के लिए NSOperationQueue
  4. NSJSONSerialization से JSON पार्स करना
← विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पर वापस जाएँ