Swift Academy · पाठ

Body का पुनर्मूल्यांकन कम करना

अनावश्यक व्यू पुनर्गणना घटाइए।

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

Body का पुनर्मूल्यांकन कम करना, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

body की गणना अक्सर होती है

SwiftUI जब भी इसके आगत मान बदलते हैं, किसी दृश्य के body को कॉल करता है। बहुत भारी या अत्यधिक जुड़े हुए body की गणना बहुत बार होती है, जिससे प्रदर्शन घटता है।

पुनर्मूल्यांकन किससे शुरू होता है

जब कोई @State, @Binding, देखा गया ऑब्जेक्ट या वह पर्यावरण मान जिसे body पढ़ता है, बदलता है—या जब उसका पैरेंट नए मान भेजता है—तब body फिर से चलता है।

struct Row: View {
    let title: String // changes -> body re-runs
    var body: some View { Text(title) }
}

आप क्या देखते हैं, उसे सीमित करें

यदि कोई दृश्य पूरे बड़े मॉडल को पढ़ता है, तो उस मॉडल में कोई भी बदलाव उसके body को फिर से चलाता है। केवल वही विशिष्ट मान भेजें जिनकी दृश्य को आवश्यकता है।

// Instead of passing the whole model:
struct Price: View {
    let amount: Decimal // narrow input
    var body: some View { Text(amount, format: .currency(code: "USD")) }
}

बड़े दृश्यों को विभाजित करें

एक बहुत बड़े body को छोटे उप-दृश्यों में बाँटें। SwiftUI केवल उन उप-दृश्यों का पुनर्मूल्यांकन करता है जिनके आगत मान वास्तव में बदले हैं, पूरी स्क्रीन का नहीं।

struct Screen: View {
    var body: some View {
        VStack {
            Header()   // re-runs only if its inputs change
            ItemList()
            Footer()
        }
    }
}

Observable और फ़ील्ड-स्तरीय ट्रैकिंग

@Observable मैक्रो के साथ SwiftUI यह ट्रैक करता है कि दृश्य कौन-से सटीक गुणधर्म पढ़ता है। केवल model.name पढ़ने वाला दृश्य model.count में होने वाले बदलावों को अनदेखा करता है।

@Observable final class Model {
    var name = ""
    var count = 0
}
// A view reading only name won’t re-run when count changes

body में काम करने से बचें

body को UI का वर्णन कम लागत में करना चाहिए। भारी गणना, जैसे क्रमबद्ध करना या फ़िल्टर करना, मॉडल या कैश की गई संपत्ति में होनी चाहिए; हर body कॉल पर दोबारा नहीं होनी चाहिए।

// Bad: sort inside body (runs every recompute)
// Good: sort once in the model, expose sorted array

स्थिर क्लोज़र और आगत मान

हर रेंडर पर नई बनाई गई सरणी या क्लोज़र भेजने से SwiftUI की समानता-जाँच निष्प्रभावी हो सकती है। स्थिर मानों को बाहर निकालकर रखें, ताकि पुनर्गणनाओं के दौरान आगत मान समान माने जाएँ।

// Hoist constants out of body
private let columns = [GridItem(.flexible())]

महँगे आरंभकों से सावधान रहें

किसी दृश्य का init कई बार चल सकता है। वहाँ भारी काम करने से बचें; SwiftUI दृश्य मानों को बार-बार बनाता है, भले ही वह उन्हें रेंडर न करे।

struct Card: View {
    init(_ item: Item) { /* keep this trivial */ }
    var body: some View { Text("Card") }
}

पर्यावरण मान पढ़ने से अद्यतन होते हैं

पर्यावरण मान पढ़ने पर दृश्य उससे जुड़ जाता है। पुनर्मूल्यांकन का दायरा सीमित करने के लिए पर्यावरण मान केवल वहीं पढ़ें जहाँ उनकी आवश्यकता हो, और सबसे छोटे उप-दृश्य में पढ़ें।

@Environment(\.colorScheme) private var scheme

Lazy कंटेनर

LazyVStack/LazyHStack और List का उपयोग करें, ताकि स्क्रीन से बाहर की पंक्तियाँ आवश्यकता होने तक न बनाई जाएँ और बड़े संग्रहों के लिए body कॉल कम हों।

ScrollView {
    LazyVStack {
        ForEach(items) { RowView(item: $0) }
    }
}

पहले मापें, फिर अनुकूलित करें

यह अनुमान न लगाएँ कि कौन-सा body सबसे अधिक काम कर रहा है। अधिक body-मूल्यांकन वाली दृश्य-संरचनाएँ खोजने के लिए SwiftUI के विश्लेषण उपकरण का उपयोग करें, फिर वहीं इन तकनीकों को लागू करें।

त्वरित जाँच: पुनर्मूल्यांकन

body के पुनर्मूल्यांकन से संबंधित अपनी समझ की जाँच करें।

पुनरावलोकन: body का पुनर्मूल्यांकन कम करना

आगत मान बदलने पर body फिर से चलते हैं, इसलिए सीमित मान भेजें, बड़े दृश्यों को छोटे उप-दृश्यों में बाँटें और @Observable की फ़ील्ड-स्तरीय ट्रैकिंग का लाभ उठाएँ। body और आरंभकों को कम लागत वाला रखें, स्थिर आगत मानों को बाहर निकालें, पर्यावरण मानों को कम से कम पढ़ें और बड़े संग्रहों के लिए Lazy कंटेनर का उपयोग करें।

अनुकूलन से पहले SwiftUI के विश्लेषण उपकरण से अधिक काम करने वाले हिस्सों की हमेशा पुष्टि करें।

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

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

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

पाठ्यक्रम
122
पाठ
409

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

क्या “Body का पुनर्मूल्यांकन कम करना” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Body का पुनर्मूल्यांकन कम करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Body का पुनर्मूल्यांकन कम करना” में मैं क्या सीखूँगा?

अनावश्यक व्यू पुनर्गणना घटाइए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“Body का पुनर्मूल्यांकन कम करना” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. View Identity को समझना
  2. Body का पुनर्मूल्यांकन कम करना
  3. Equatable Views और @State Scope
  4. SwiftUI Instrument से प्रोफ़ाइलिंग
← Swift Academy पर वापस जाएँ