<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harsh Prajapat</title>
    <description>The latest articles on DEV Community by Harsh Prajapat (@harshpdev).</description>
    <link>https://dev.to/harshpdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3348109%2Ffb6680e6-0730-4191-9968-c221b5b57ea2.png</url>
      <title>DEV Community: Harsh Prajapat</title>
      <link>https://dev.to/harshpdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshpdev"/>
    <language>en</language>
    <item>
      <title>💊 Treatment Plan</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Wed, 07 Jan 2026 11:17:11 +0000</pubDate>
      <link>https://dev.to/harshpdev/treatment-plan-3e03</link>
      <guid>https://dev.to/harshpdev/treatment-plan-3e03</guid>
      <description>&lt;p&gt;🥗 Diet for Small Gallstones (बहुत ज़रूरी)&lt;/p&gt;

&lt;p&gt;🌅 सुबह&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;गुनगुना पानी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;½ चम्मच अजवाइन या सौंफ&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🍽️ नाश्ता&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;दलिया / ओट्स (पानी में बना)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सादा टोस्ट&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;पपीता या केला (थोड़ा)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🍛 दोपहर&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1–2 सादी रोटी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;लौकी / तोरी / टिंडा&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;मूंग दाल&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;छाछ + भुना जीरा&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌙 रात (7–8 बजे)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;खिचड़ी / सब्ज़ी सूप&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;बहुत हल्का खाना&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;❌ देर रात खाना बिल्कुल नहीं&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌿 दर्द से राहत के घरेलू उपाय&lt;/p&gt;

&lt;p&gt;✔ जब दर्द हो&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;गर्म पानी की सिकाई (दाहिनी तरफ)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;अजवाइन + गुनगुना पानी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सीधा लेटें, करवट न बदलें&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✔ रोज़&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;छाछ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;हल्की वॉक (20–30 मिनट)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;❌ पूरी तरह Avoid करें&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;तला-भुना&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ज्यादा तेल / घी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;पनीर, मलाई&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;बाहर का खाना&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;कोल्ड ड्रिंक&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ज़्यादा मिर्च-मसाले&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>resources</category>
      <category>tutorial</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>🥗 आपके लिए खास डाइट चार्ट (Gas Problem)</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Wed, 07 Jan 2026 10:30:04 +0000</pubDate>
      <link>https://dev.to/harshpdev/aapke-lie-khaas-ddaaitt-caartt-gas-problem-2jfd</link>
      <guid>https://dev.to/harshpdev/aapke-lie-khaas-ddaaitt-caartt-gas-problem-2jfd</guid>
      <description>&lt;p&gt;🌅 सुबह उठते ही&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1 गिलास गुनगुना पानी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;½ चम्मच अजवाइन या सौंफ&lt;br&gt;
(रोज़ करें)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🍽️ नाश्ता (8–9 बजे)&lt;/p&gt;

&lt;p&gt;इनमें से कोई एक चुनें:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;दलिया (बिना ज़्यादा सब्ज़ी)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ओट्स (पानी में बना हुआ)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2 सादा टोस्ट + थोड़ा मक्खन&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;पपीता या केला (कम मात्रा)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;❌ पराठा, छोले, ब्रेड-बटर ज़्यादा मात्रा में न लें&lt;/p&gt;

&lt;p&gt;☕ मिड-मॉर्निंग (11–12)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;नारियल पानी या&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सौंफ की चाय / जीरा पानी&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🍛 दोपहर का खाना (1–2 बजे)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;2 सादी रोटी (गेहूं/ज्वार)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;सब्ज़ी:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;लौकी&lt;/li&gt;
&lt;li&gt;तोरी&lt;/li&gt;
&lt;li&gt;टिंडा&lt;/li&gt;
&lt;li&gt;गाजर&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;दाल: मूंग दाल (छिलके बिना)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 कटोरी छाछ (नमक + भुना जीरा)&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;❌ राजमा, छोले, चना, गोभी, ज्यादा सलाद न लें&lt;/p&gt;

&lt;p&gt;☕ शाम (5–6 बजे)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;भुने मखाने / भुने चने (थोड़े)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;अदरक वाली हल्की चाय (बिना बिस्किट)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🍲 रात का खाना (7–8 बजे, हल्का)&lt;/p&gt;

&lt;p&gt;इनमें से कोई एक:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;खिचड़ी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सब्ज़ी सूप + 1 रोटी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;लौकी/तोरी की सब्ज़ी + 1–2 रोटी&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;❌ दही, सलाद, भारी खाना रात में न लें&lt;/p&gt;

&lt;p&gt;🌙 सोने से पहले&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;गुनगुना पानी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;5–10 मिनट वज्रासन&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚫 4 साल की गैस में सख़्त परहेज़&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;दूध (अगर गैस बढ़ती हो)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;कच्चा प्याज़, कच्ची सब्ज़ी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;कोल्ड ड्रिंक, पैकेज्ड जूस&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;तला-भुना, बाहर का खाना&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;बहुत ज़्यादा चाय/कॉफी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;देर रात खाना&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌿 आयुर्वेदिक घरेलू उपाय (बहुत असरदार)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;अजवाइन + काला नमक&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;रोज़ खाने के बाद&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;त्रिफला चूर्ण&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;½ चम्मच रात को गुनगुने पानी से (7–10 दिन)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;खाने के बाद सौंफ चबाना&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🧘 लाइफस्टाइल टिप्स (बहुत ज़रूरी)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;खाना धीरे और चबा कर खाएँ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;मोबाइल देखते हुए खाना न खाएँ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;रोज़ 20–30 मिनट टहलें&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;तनाव (Stress) कम करें – गैस का बड़ा कारण&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ महत्वपूर्ण&lt;br&gt;
4 साल से गैस होने पर अगर ये लक्षण हों:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;रोज़ पेट फूला रहे&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;कब्ज/दस्त बार-बार&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सीने में जलन&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;वजन घट रहा हो&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>गैस से बचने के लिए क्या खाएँ और क्या न खाएँ</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Wed, 07 Jan 2026 10:18:36 +0000</pubDate>
      <link>https://dev.to/harshpdev/gais-se-bcne-ke-lie-kyaa-khaaen-aur-kyaa-n-khaaen-4a0b</link>
      <guid>https://dev.to/harshpdev/gais-se-bcne-ke-lie-kyaa-khaaen-aur-kyaa-n-khaaen-4a0b</guid>
      <description>&lt;p&gt;खाना खाने के बाद गैस बनने की समस्या आम है, और सही डाइट से इसे काफी हद तक कंट्रोल किया जा सकता है। नीचे गैस से बचने के लिए क्या खाएँ और क्या न खाएँ&lt;/p&gt;

&lt;p&gt;🌿 गैस से बचने के लिए क्या खाएँ (Gas Free Diet)&lt;/p&gt;

&lt;p&gt;✅ सुबह (Breakfast)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;गुनगुना पानी + थोड़ा सा अजवाइन&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ओट्स या दलिया&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सादा टोस्ट या ब्राउन ब्रेड&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;पपीता, केला (कम मात्रा में)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ दोपहर का खाना (Lunch)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;सादी रोटी (गेहूं/ज्वार/बाजरा)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;लौकी, तोरी, टिंडा, गाजर की सब्ज़ी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;मूंग दाल (छिलके वाली नहीं)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सादा दही (थोड़ी मात्रा में)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;जीरा या अजवाइन का इस्तेमाल करें&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ शाम&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;सौंफ या जीरा की चाय&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;भुने चने (थोड़े)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;मखाना&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ रात का खाना (Dinner – हल्का रखें)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;खिचड़ी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सूप (सब्ज़ियों का)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1–2 रोटी + हल्की सब्ज़ी&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;सोने से 2–3 घंटे पहले खाएँ&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚫 गैस बढ़ाने वाले खाद्य पदार्थ (Avoid करें)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;राजमा, छोले, काबुली चना&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;फूलगोभी, पत्ता गोभी, ब्रोकली&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;तली-भुनी चीज़ें&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ज्यादा मिर्च-मसाले&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;कोल्ड ड्रिंक, सोडा&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;दूध (अगर पचता न हो)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;फास्ट फूड, बेकरी आइटम&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;बहुत ज़्यादा चाय या कॉफी&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌱 घरेलू उपाय (Natural Tips)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;खाने के बाद सौंफ + मिश्री चबाएँ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;अजवाइन + काला नमक गुनगुने पानी के साथ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;धीरे-धीरे चबाकर खाएँ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;खाने के तुरंत बाद न लेटें&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;रोज़ 20–30 मिनट टहलें&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>SwiftUI’s property wrappers</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 18:19:35 +0000</pubDate>
      <link>https://dev.to/harshpdev/swiftuis-property-wrappers-2b4c</link>
      <guid>https://dev.to/harshpdev/swiftuis-property-wrappers-2b4c</guid>
      <description>&lt;p&gt;SwiftUI’s property wrappers are like magical tools that help you manage state, data flow, and environment context in a declarative way. Let’s break down the most important ones so you can see how they fit together. 🧠✨&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 Core Property Wrappers in SwiftUI
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Wrapper&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Ownership&lt;/th&gt;
&lt;th&gt;Typical Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@State&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Local value-type state&lt;/td&gt;
&lt;td&gt;✅ Owns data&lt;/td&gt;
&lt;td&gt;Simple UI state (e.g. toggles, counters)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@Binding&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Two-way connection to another value&lt;/td&gt;
&lt;td&gt;❌ Refers to external data&lt;/td&gt;
&lt;td&gt;Pass state between parent and child views&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@StateObject&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Owns a reference-type observable object&lt;/td&gt;
&lt;td&gt;✅ Owns data&lt;/td&gt;
&lt;td&gt;Create and manage &lt;code&gt;ObservableObject&lt;/code&gt; instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@ObservedObject&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Observes external &lt;code&gt;ObservableObject&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;❌ Refers to external data&lt;/td&gt;
&lt;td&gt;Watch changes in shared objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@EnvironmentObject&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Access shared object from environment&lt;/td&gt;
&lt;td&gt;❌ Refers to external data&lt;/td&gt;
&lt;td&gt;Share data across many views&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@Environment&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read system/environment values&lt;/td&gt;
&lt;td&gt;❌ Refers to external data&lt;/td&gt;
&lt;td&gt;Access traits like color scheme, locale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@AppStorage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read/write to &lt;code&gt;UserDefaults&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅ Owns data&lt;/td&gt;
&lt;td&gt;Persist user settings (e.g. theme, login)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@Published&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Notify views of changes inside &lt;code&gt;ObservableObject&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅ Owns data&lt;/td&gt;
&lt;td&gt;Mark properties that trigger view updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@Observable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;New macro replacing &lt;code&gt;ObservableObject&lt;/code&gt; + &lt;code&gt;@Published&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅ Owns data&lt;/td&gt;
&lt;td&gt;Cleaner, more efficient state tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@Bindable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables bindings to &lt;code&gt;@Observable&lt;/code&gt; properties&lt;/td&gt;
&lt;td&gt;❌ Refers to external data&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;$property&lt;/code&gt; syntax with &lt;code&gt;@Observable&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧪 Example: Using &lt;code&gt;@State&lt;/code&gt; and &lt;code&gt;@Binding&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;ParentView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@State&lt;/span&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;isOn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;ToggleView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;$isOn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;ToggleView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@Binding&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Bool&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;Toggle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Enable Feature"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;$isOn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧬 Example: Using &lt;code&gt;@StateObject&lt;/code&gt; and &lt;code&gt;@ObservedObject&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;CounterModel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;ObservableObject&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@Published&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;CounterView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@StateObject&lt;/span&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;CounterModel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;VStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Count: &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="kt"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Increment"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you pass &lt;code&gt;model&lt;/code&gt; to another view, use &lt;code&gt;@ObservedObject&lt;/code&gt; there.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌍 Example: Using &lt;code&gt;@EnvironmentObject&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;ObservableObject&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@Published&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;isDarkMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;RootView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@StateObject&lt;/span&gt; &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;settings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Settings&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;ContentView&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;environmentObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;ContentView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;@EnvironmentObject&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Settings&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;Toggle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Dark Mode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;$settings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isDarkMode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Want to dive deeper into &lt;code&gt;@Observable&lt;/code&gt;, &lt;code&gt;@Bindable&lt;/code&gt;, or how these wrappers interact with SwiftUI’s rendering engine? I can walk you through advanced patterns or help refactor your code. 🧵💬&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Swift Language &amp; its features</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 18:16:21 +0000</pubDate>
      <link>https://dev.to/harshpdev/swift-language-its-features-p0l</link>
      <guid>https://dev.to/harshpdev/swift-language-its-features-p0l</guid>
      <description>&lt;p&gt;Swift is a &lt;strong&gt;modern, high-performance programming language&lt;/strong&gt; developed by Apple for building apps across its platforms — including iOS, macOS, watchOS, tvOS, and visionOS. It’s designed to be &lt;strong&gt;safe, fast, and expressive&lt;/strong&gt;, making it a favorite among developers for both mobile and server-side development.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Key Features of Swift
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety &amp;amp; Inference&lt;/strong&gt;: Helps catch bugs early and reduces boilerplate code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optionals&lt;/strong&gt;: Prevents null pointer crashes by safely handling missing values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Closures&lt;/strong&gt;: Similar to lambdas, enabling functional programming patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol-Oriented Programming&lt;/strong&gt;: Encourages reusable and flexible code structures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Management&lt;/strong&gt;: Uses Automatic Reference Counting (ARC) to manage memory efficiently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interoperability&lt;/strong&gt;: Works seamlessly with Objective-C and C/C++ codebases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source&lt;/strong&gt;: Available on &lt;a href="https://www.swift.org/" rel="noopener noreferrer"&gt;Swift.org&lt;/a&gt;, with support for Linux, Windows, and Android in addition to Apple platforms.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Example: A Simple Swift Program
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;Foundation&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hello, Swift!"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prints a friendly message to the console — simple, clean, and readable.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌍 Where Swift Shines
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Why Swift Works Well&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;iOS/macOS App Development&lt;/td&gt;
&lt;td&gt;Native performance, tight integration with Apple frameworks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Server-side Development&lt;/td&gt;
&lt;td&gt;Fast execution, safety, and open-source support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedded Systems&lt;/td&gt;
&lt;td&gt;Scales down to microcontrollers with minimal overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-platform Tools&lt;/td&gt;
&lt;td&gt;Can be used with Swift Package Manager and third-party frameworks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;Swift is constantly evolving — the latest versions include powerful features like &lt;strong&gt;concurrency support&lt;/strong&gt;, &lt;strong&gt;macros&lt;/strong&gt;, and &lt;strong&gt;data-race safety improvements&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Swift is packed with features that make it a powerful, safe, and expressive language for modern app development. Let’s explore what makes it stand out. 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Core Features of Swift
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Type Safety &amp;amp; Type Inference&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prevents mismatched types and reduces boilerplate by automatically inferring types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optionals&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Helps handle the absence of a value safely, avoiding crashes from &lt;code&gt;nil&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Closures&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lightweight blocks of functionality that can be passed around and used in functional programming.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protocols &amp;amp; Protocol-Oriented Programming&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Encourages flexible and reusable code by defining behavior contracts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generics&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Write flexible, reusable functions and types that work with any type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic Reference Counting (ARC)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Efficient memory management without manual intervention.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Error Handling&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Built-in support for throwing, catching, and propagating errors using &lt;code&gt;try&lt;/code&gt;, &lt;code&gt;catch&lt;/code&gt;, and &lt;code&gt;throws&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tuples&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Group multiple values into a single compound value with mixed types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pattern Matching&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Powerful &lt;code&gt;switch&lt;/code&gt; statements and &lt;code&gt;if case&lt;/code&gt; constructs for clean control flow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Value Types with Structs &amp;amp; Enums&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Safer and more predictable than reference types in many cases.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Modern Additions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Concurrency with async/await&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Simplifies asynchronous code and improves readability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Actors&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Protect mutable state in concurrent environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Property Wrappers&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Encapsulate logic for property behaviors like &lt;code&gt;@State&lt;/code&gt;, &lt;code&gt;@Published&lt;/code&gt;, and &lt;code&gt;@AppStorage&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Swift Macros&lt;/strong&gt; &lt;em&gt;(Swift 5.9+)&lt;/em&gt;&lt;br&gt;&lt;br&gt;
Enable compile-time code generation for cleaner and more efficient code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Developer-Friendly Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Playgrounds&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Interactive coding environment for experimentation and learning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Swift Package Manager (SPM)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Built-in tool for managing dependencies and modular code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interoperability with Objective-C&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Seamlessly integrates with legacy codebases and Apple frameworks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Swift is constantly evolving, and its blend of safety, performance, and expressiveness makes it ideal for everything from mobile apps to server-side development. Want to dive into any of these features with code examples or explore how Swift compares to other languages? I’m ready when you are. 💬💻&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Arrays
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;array&lt;/strong&gt; is an &lt;strong&gt;ordered collection&lt;/strong&gt; of values of the same type. You can access elements by their index, starting from 0.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maintains &lt;strong&gt;order&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Allows &lt;strong&gt;duplicates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Indexed access (&lt;code&gt;array[0]&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧪 Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;fruits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Apple"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Banana"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Cherry"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="c1"&gt;// "Banana"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 Common Operations:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;append()&lt;/code&gt; – Add an item&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;insert(_:at:)&lt;/code&gt; – Insert at index&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;remove(at:)&lt;/code&gt; – Remove item&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;count&lt;/code&gt; – Number of elements&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;isEmpty&lt;/code&gt; – Check if empty&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧮 Sets
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;set&lt;/strong&gt; is an &lt;strong&gt;unordered collection&lt;/strong&gt; of &lt;strong&gt;unique&lt;/strong&gt; values. It’s great for checking membership or eliminating duplicates.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No &lt;strong&gt;order&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;duplicates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fast &lt;strong&gt;membership checks&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧪 Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Set&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Red"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Green"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Blue"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Red"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Won’t add again&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Green"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 Common Operations:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;insert()&lt;/code&gt; – Add item&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;remove()&lt;/code&gt; – Remove item&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;union()&lt;/code&gt; – Combine sets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;intersection()&lt;/code&gt; – Common items&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;subtracting()&lt;/code&gt; – Difference&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧷 Tuples
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;tuple&lt;/strong&gt; groups multiple values into a single compound value. Unlike arrays and sets, tuples can contain &lt;strong&gt;different types&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fixed size&lt;/li&gt;
&lt;li&gt;Can hold &lt;strong&gt;mixed types&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Useful for returning multiple values&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧪 Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// "Alice"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// 30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 Usage Tips:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Access by index (&lt;code&gt;user.0&lt;/code&gt;) or name (&lt;code&gt;user.name&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Great for temporary groupings&lt;/li&gt;
&lt;li&gt;Not ideal for large or dynamic data sets&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Summary Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Array&lt;/th&gt;
&lt;th&gt;Set&lt;/th&gt;
&lt;th&gt;Tuple&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ordered&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ (fixed order)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duplicates&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ (can repeat)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed Types&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Index Access&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Case&lt;/td&gt;
&lt;td&gt;Lists&lt;/td&gt;
&lt;td&gt;Unique items&lt;/td&gt;
&lt;td&gt;Grouped values&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;In Swift, &lt;code&gt;async&lt;/code&gt; and &lt;code&gt;await&lt;/code&gt; are part of the &lt;strong&gt;structured concurrency model&lt;/strong&gt; introduced in Swift 5.5. They make asynchronous code easier to write, read, and maintain — no more messy callback pyramids or completion handlers! 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Is &lt;code&gt;async&lt;/code&gt;?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Marks a function as &lt;strong&gt;asynchronous&lt;/strong&gt;, meaning it can pause and resume later.&lt;/li&gt;
&lt;li&gt;Allows long-running tasks (like network calls) to run &lt;strong&gt;without blocking the main thread&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;fetchUserData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Simulate a delay&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"User data loaded"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⏳ What Is &lt;code&gt;await&lt;/code&gt;?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tells Swift to &lt;strong&gt;wait&lt;/strong&gt; for the result of an &lt;code&gt;async&lt;/code&gt; function before continuing.&lt;/li&gt;
&lt;li&gt;Must be used &lt;strong&gt;inside an async context&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;loadData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchUserData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧪 Example with Error Handling
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;fetchImage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;throws&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;Data&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;string&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"https://example.com/image.png"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="kt"&gt;URLSession&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;Task&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;imageData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchImage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Image size: &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;imageData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt; bytes"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Failed to fetch image: &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧵 Why Use &lt;code&gt;async&lt;/code&gt;/&lt;code&gt;await&lt;/code&gt;?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benefit&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Cleaner Syntax&lt;/td&gt;
&lt;td&gt;No nested closures or callback hell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Safer Error Handling&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;try&lt;/code&gt;/&lt;code&gt;catch&lt;/code&gt; with async code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Better Performance&lt;/td&gt;
&lt;td&gt;Keeps UI responsive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Easier to Read&lt;/td&gt;
&lt;td&gt;Code flows top-to-bottom like synchronous logic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;Want to see how this compares to Combine or RxSwift? Or maybe how to convert old completion-based code to async/await? I can walk you through it! 🧭💬&lt;/p&gt;

&lt;p&gt;In Swift, &lt;code&gt;defer&lt;/code&gt; is a powerful keyword that lets you schedule code to be executed &lt;strong&gt;just before exiting the current scope&lt;/strong&gt; — whether that’s a function, loop, or block. Think of it as a way to say, “Do this cleanup work last, no matter what.” 🧹&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What &lt;code&gt;defer&lt;/code&gt; Does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Executes its block &lt;strong&gt;when the surrounding scope ends&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Runs &lt;strong&gt;even if the function exits early&lt;/strong&gt; (via &lt;code&gt;return&lt;/code&gt;, &lt;code&gt;throw&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Helps with &lt;strong&gt;resource cleanup&lt;/strong&gt;, like closing files or releasing locks&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Example: File Handling
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;writeLog&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;openFile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;closeFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// Always runs when function ends&lt;/span&gt;

    &lt;span class="k"&gt;guard&lt;/span&gt; &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fetchData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even if &lt;code&gt;fetchData()&lt;/code&gt; fails and the function returns early, &lt;code&gt;closeFile(file)&lt;/code&gt; will still be called.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔁 Multiple &lt;code&gt;defer&lt;/code&gt; Blocks
&lt;/h2&gt;

&lt;p&gt;You can stack multiple &lt;code&gt;defer&lt;/code&gt; statements. Swift executes them in &lt;strong&gt;reverse order&lt;/strong&gt; — like unwinding a stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;testDeferOrder&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"First"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Second"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Third"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Done"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Done
Third
Second
First
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧩 Common Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Closing resources&lt;/strong&gt; (files, network connections)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unlocking locks&lt;/strong&gt; in multithreaded code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Committing transactions&lt;/strong&gt; (e.g., Core Animation or database)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calling completion handlers&lt;/strong&gt; in networking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaning up temporary state&lt;/strong&gt; in unit tests&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ Things to Watch Out For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You &lt;strong&gt;can’t break, continue, or return&lt;/strong&gt; from inside a &lt;code&gt;defer&lt;/code&gt; block&lt;/li&gt;
&lt;li&gt;Avoid modifying return values inside &lt;code&gt;defer&lt;/code&gt; — it’s unreliable for that purpose&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;defer&lt;/code&gt; doesn’t capture values at the time it’s declared — it uses the latest value when executed&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;In Swift, a &lt;code&gt;lazy var&lt;/code&gt; is a &lt;strong&gt;stored property whose initial value isn’t calculated until it’s first accessed&lt;/strong&gt;. It’s perfect for deferring expensive setup work until it’s actually needed. 💤⚡&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Why Use &lt;code&gt;lazy var&lt;/code&gt;?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Saves performance by &lt;strong&gt;delaying initialization&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Useful when the property depends on &lt;strong&gt;external factors&lt;/strong&gt; or &lt;strong&gt;complex setup&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Only initialized &lt;strong&gt;once&lt;/strong&gt;, and the result is &lt;strong&gt;cached&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;DataManager&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;lazy&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Loading data..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Apple"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Banana"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Cherry"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;manager&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;DataManager&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;// At this point, `data` hasn't been initialized&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Triggers initialization&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Loading data...
["Apple", "Banana", "Cherry"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Key Rules
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Must be declared with &lt;code&gt;var&lt;/code&gt; — &lt;strong&gt;not&lt;/strong&gt; &lt;code&gt;let&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Can only be used with &lt;strong&gt;stored properties&lt;/strong&gt;, not computed ones&lt;/li&gt;
&lt;li&gt;Not thread-safe by default — be cautious in multithreaded contexts&lt;/li&gt;
&lt;li&gt;Works only with &lt;strong&gt;classes and mutable structs&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧭 When to Use
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;lazy var&lt;/code&gt; is Ideal?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Expensive computation&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conditional setup&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Always needed immediately&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs to update dynamically&lt;/td&gt;
&lt;td&gt;❌ Use computed var&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;In Swift, &lt;strong&gt;access modifiers&lt;/strong&gt; (also called access control levels) define the visibility and accessibility of your code entities — like classes, structs, properties, methods, and more. They help you encapsulate logic and protect internal implementation details. 🔐&lt;/p&gt;




&lt;h2&gt;
  
  
  🚦 Swift Access Levels Overview
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modifier&lt;/th&gt;
&lt;th&gt;Visibility Scope&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accessible and subclassable &lt;strong&gt;outside&lt;/strong&gt; the module. Most permissive.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;public&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accessible &lt;strong&gt;outside&lt;/strong&gt; the module, but &lt;strong&gt;not subclassable&lt;/strong&gt; externally.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;internal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accessible &lt;strong&gt;within the same module&lt;/strong&gt;. Default level.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fileprivate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accessible &lt;strong&gt;only within the same source file&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;private&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accessible &lt;strong&gt;only within the enclosing declaration&lt;/strong&gt; and its extensions in file.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧪 Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Vehicle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;internal&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;speed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;startEngine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Engine started"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Vehicle&lt;/code&gt; can be accessed from other modules.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;speed&lt;/code&gt; is accessible only within the same module.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;startEngine()&lt;/code&gt; is hidden from everything except inside &lt;code&gt;Vehicle&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Key Rules
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You &lt;strong&gt;can’t expose&lt;/strong&gt; a public entity that depends on a more restricted type.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;open&lt;/code&gt; is only for &lt;strong&gt;classes and class members&lt;/strong&gt;, allowing external subclassing and overriding.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;internal&lt;/code&gt; is the &lt;strong&gt;default&lt;/strong&gt; — no modifier needed.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;fileprivate&lt;/code&gt; or &lt;code&gt;private&lt;/code&gt; to &lt;strong&gt;hide implementation details&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧵 When to Use What
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Recommended Modifier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Public API for a framework&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;open&lt;/code&gt; or &lt;code&gt;public&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal logic in your app&lt;/td&gt;
&lt;td&gt;&lt;code&gt;internal&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Helper methods in a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;fileprivate&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temporary variables in a method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;private&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🧠 Automatic Reference Counting (ARC)
&lt;/h3&gt;

&lt;p&gt;ARC is Swift’s memory management system that automatically tracks and manages the memory used by class instances.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every time you create a new class instance, ARC allocates memory for it.&lt;/li&gt;
&lt;li&gt;ARC keeps a &lt;strong&gt;reference count&lt;/strong&gt;: when the count drops to zero, the instance is deallocated.&lt;/li&gt;
&lt;li&gt;ARC applies only to &lt;strong&gt;reference types&lt;/strong&gt; (i.e., classes), not value types like structs or enums.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔗 Strong References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The default type of reference in Swift.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;strong reference&lt;/strong&gt; increases the reference count of an object.&lt;/li&gt;
&lt;li&gt;As long as there’s at least one strong reference, the object stays in memory.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;pet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="c1"&gt;// strong reference by default&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧷 Weak References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;weak reference&lt;/strong&gt; does &lt;strong&gt;not&lt;/strong&gt; increase the reference count.&lt;/li&gt;
&lt;li&gt;It’s declared with the &lt;code&gt;weak&lt;/code&gt; keyword and must be &lt;strong&gt;optional&lt;/strong&gt; (&lt;code&gt;?&lt;/code&gt;) because it can become &lt;code&gt;nil&lt;/code&gt; when the object is deallocated.&lt;/li&gt;
&lt;li&gt;Used to avoid &lt;strong&gt;retain cycles&lt;/strong&gt; when the referenced object might be deallocated independently.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Dog&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;weak&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="c1"&gt;// weak reference&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🪢 Unowned References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Like weak references, &lt;strong&gt;unowned&lt;/strong&gt; references don’t increase the reference count.&lt;/li&gt;
&lt;li&gt;But they are &lt;strong&gt;non-optional&lt;/strong&gt; and assume the referenced object will &lt;strong&gt;never be nil&lt;/strong&gt; during their lifetime.&lt;/li&gt;
&lt;li&gt;If accessed after deallocation, it causes a &lt;strong&gt;runtime crash&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;CreditCard&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;unowned&lt;/span&gt; &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Customer&lt;/span&gt; &lt;span class="c1"&gt;// unowned reference&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧩 Weak Self in Closures
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Closures &lt;strong&gt;capture&lt;/strong&gt; references, including &lt;code&gt;self&lt;/code&gt;, which can lead to retain cycles.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;[weak self]&lt;/code&gt; in the closure’s &lt;strong&gt;capture list&lt;/strong&gt; to avoid this.&lt;/li&gt;
&lt;li&gt;Since &lt;code&gt;self&lt;/code&gt; becomes optional, you often need to unwrap it.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="n"&gt;someAsyncCall&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;weak&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="k"&gt;guard&lt;/span&gt; &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;self&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;doSomething&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔁 Retain Cycle
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;retain cycle&lt;/strong&gt; happens when two objects hold strong references to each other, preventing ARC from deallocating them.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;apartment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Apartment&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Apartment&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;tenant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If both &lt;code&gt;apartment&lt;/code&gt; and &lt;code&gt;tenant&lt;/code&gt; are strong references, neither object will be deallocated. To fix this, make one of them &lt;code&gt;weak&lt;/code&gt; or &lt;code&gt;unowned&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;Grand Central Dispatch (GCD) is Apple’s &lt;strong&gt;low-level concurrency framework&lt;/strong&gt; that helps you execute tasks &lt;strong&gt;asynchronously&lt;/strong&gt; and &lt;strong&gt;concurrently&lt;/strong&gt;, making your iOS apps more responsive and efficient. 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Is GCD?
&lt;/h2&gt;

&lt;p&gt;GCD manages &lt;strong&gt;dispatch queues&lt;/strong&gt;, which are thread-safe structures that hold tasks (blocks of code) to be executed. It abstracts away the complexity of thread management, letting you focus on what needs to be done — not how it’s scheduled.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 Types of Dispatch Queues
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Queue Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Main Queue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Serial queue tied to the main thread — used for UI updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Global Queues&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Concurrent queues provided by the system with different QoS levels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom Queues&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You can create your own serial or concurrent queues&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;serialQueue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;DispatchQueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"com.myapp.serial"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;concurrentQueue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;DispatchQueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"com.myapp.concurrent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;concurrent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚙️ Synchronous vs Asynchronous Execution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sync&lt;/code&gt;: Blocks the current thread until the task finishes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;async&lt;/code&gt;: Executes the task in the background and returns immediately.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;DispatchQueue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;global&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Background task&lt;/span&gt;
    &lt;span class="kt"&gt;DispatchQueue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// UI update&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎯 Quality of Service (QoS)
&lt;/h2&gt;

&lt;p&gt;GCD lets you prioritize tasks using QoS classes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;QoS Class&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.userInteractive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Immediate UI updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.userInitiated&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tasks triggered by user actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.utility&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Long-running tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.background&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Non-urgent tasks like backups&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧩 Advanced Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DispatchGroup&lt;/strong&gt;: Wait for multiple tasks to finish&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DispatchSemaphore&lt;/strong&gt;: Control access to resources&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DispatchWorkItem&lt;/strong&gt;: Encapsulate work with cancelation and dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Barrier Tasks&lt;/strong&gt;: Synchronize access in concurrent queues&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;GCD is the backbone of concurrency in iOS, and mastering it unlocks smoother animations, faster data processing, and better user experiences. Want to dive into DispatchGroup or see how GCD compares to Combine or async/await? I’ve got examples ready to go. 🧪📱&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DispatchGroup&lt;/code&gt; in iOS is a powerful tool from &lt;strong&gt;Grand Central Dispatch (GCD)&lt;/strong&gt; that lets you manage multiple asynchronous tasks and get notified when they’ve all completed. It’s perfect for coordinating parallel operations like network requests, image processing, or database queries. 🧠🔄&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 What Is DispatchGroup?
&lt;/h2&gt;

&lt;p&gt;A &lt;code&gt;DispatchGroup&lt;/code&gt; lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enter&lt;/strong&gt; the group when a task starts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leave&lt;/strong&gt; the group when a task finishes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notify&lt;/strong&gt; when all tasks are done&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps you synchronize multiple async operations and trigger a final action once everything is complete.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Basic Usage Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;group&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;DispatchGroup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;fetchUserData&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="c1"&gt;// handle result&lt;/span&gt;
    &lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;leave&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;fetchPosts&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="c1"&gt;// handle result&lt;/span&gt;
    &lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;leave&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"All tasks completed! Update UI here."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each &lt;code&gt;enter()&lt;/code&gt; signals that a task has started, and &lt;code&gt;leave()&lt;/code&gt; signals it’s done. Once all entered tasks have left, the &lt;code&gt;notify&lt;/code&gt; block runs.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Real-World Use Case
&lt;/h2&gt;

&lt;p&gt;Imagine loading a profile screen that needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User info&lt;/li&gt;
&lt;li&gt;Profile picture&lt;/li&gt;
&lt;li&gt;Recent posts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can fire all three requests in parallel using &lt;code&gt;DispatchGroup&lt;/code&gt;, and update the UI only when all are done — improving performance and user experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Key Points
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;enter()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Manually signal a task has started&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;leave()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Signal task completion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notify(queue:)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run code after all tasks finish&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;wait()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Block current thread until tasks finish (use cautiously!)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




</description>
    </item>
    <item>
      <title>iOS Interview Prep</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 17:46:41 +0000</pubDate>
      <link>https://dev.to/harshpdev/ios-interview-prep-38am</link>
      <guid>https://dev.to/harshpdev/ios-interview-prep-38am</guid>
      <description>&lt;p&gt;📱 &lt;strong&gt;iOS&lt;/strong&gt; stands for &lt;strong&gt;iPhone Operating System&lt;/strong&gt;, and it's the mobile operating system developed by &lt;strong&gt;Apple Inc.&lt;/strong&gt; to power devices like the &lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; (until iPadOS split off), and &lt;strong&gt;iPod Touch&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Key Features of iOS:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Touch-based interface&lt;/strong&gt;: Designed for intuitive gestures like tap, swipe, and pinch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Store&lt;/strong&gt;: A centralized marketplace for downloading apps, games, and tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security &amp;amp; Privacy&lt;/strong&gt;: Includes features like Face ID, Touch ID, app sandboxing, and frequent updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration&lt;/strong&gt;: Seamlessly connects with other Apple devices via features like Handoff, AirDrop, and iCloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Known for smooth animations, fast app launches, and efficient battery usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🕰️ A Bit of History:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First introduced in &lt;strong&gt;2007&lt;/strong&gt; with the original iPhone.&lt;/li&gt;
&lt;li&gt;Originally called &lt;strong&gt;iPhone OS&lt;/strong&gt;, renamed to &lt;strong&gt;iOS&lt;/strong&gt; in &lt;strong&gt;2010&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Has evolved through major updates, with new features like Siri, FaceTime, widgets, and lock screen customization.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔒 Is It Open Source?
&lt;/h3&gt;

&lt;p&gt;Not really. While some components are open source, &lt;strong&gt;iOS is mostly proprietary software&lt;/strong&gt;, meaning Apple controls its development and distribution.&lt;/p&gt;

&lt;p&gt;If you're curious about how it compares to Android or want to explore app development for iOS, I can walk you through that too. Want to dive deeper?&lt;/p&gt;




&lt;p&gt;Let’s walk through what iOS app development involves and the essential tools you’ll need to get started. 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  📱 What Is iOS App Development?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;iOS app development&lt;/strong&gt; is the process of creating applications for Apple’s mobile operating system — used on devices like the iPhone, iPad, and iPod Touch. These apps are distributed via the &lt;strong&gt;App Store&lt;/strong&gt;, and developers use Apple’s ecosystem of tools and languages to build them.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 Essential Tools &amp;amp; Software for iOS Development
&lt;/h2&gt;

&lt;p&gt;Here’s a breakdown of the key tools and software you’ll need:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool / Software&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Xcode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Main IDE for iOS development&lt;/td&gt;
&lt;td&gt;Includes code editor, debugger, simulator, and Interface Builder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Swift&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Primary programming language&lt;/td&gt;
&lt;td&gt;Fast, safe, and modern language developed by Apple&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Objective-C&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Legacy language still used in some apps&lt;/td&gt;
&lt;td&gt;Older but still supported by Apple&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SwiftUI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;UI framework for building interfaces&lt;/td&gt;
&lt;td&gt;Declarative syntax, live previews, and cross-platform support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UIKit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Traditional UI framework&lt;/td&gt;
&lt;td&gt;Offers more control and customization than SwiftUI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TestFlight&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Beta testing platform&lt;/td&gt;
&lt;td&gt;Used to distribute pre-release apps to testers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CocoaPods&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dependency manager&lt;/td&gt;
&lt;td&gt;Helps manage third-party libraries and frameworks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Firebase&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Backend services&lt;/td&gt;
&lt;td&gt;Real-time database, authentication, analytics, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AppCode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Alternative IDE by JetBrains&lt;/td&gt;
&lt;td&gt;Supports Swift, Objective-C, and integrates with Xcode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CodeRunner&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lightweight IDE for multiple languages&lt;/td&gt;
&lt;td&gt;Great for quick prototyping and testing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💻 System Requirements
&lt;/h2&gt;

&lt;p&gt;To develop iOS apps, you’ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Mac computer&lt;/strong&gt; (macOS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apple Developer Account&lt;/strong&gt; (for testing on devices and publishing to the App Store)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iOS Simulator&lt;/strong&gt; (comes with Xcode for testing apps without a physical device)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Optional but Helpful Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sketch / Figma&lt;/strong&gt;: For UI/UX design&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git &amp;amp; GitHub&lt;/strong&gt;: Version control and collaboration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raygun / Charles Proxy&lt;/strong&gt;: Debugging and performance monitoring tools&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;😄😄😄&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swift vs Objective-C&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Swift and Objective-C are both used for iOS development, but they differ significantly in design, performance, and developer experience. Let’s break it down:&lt;/p&gt;




&lt;h2&gt;
  
  
  🆚 Swift vs Objective-C: Quick Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Swift&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Objective-C&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Introduced&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;1984&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Clean, modern, concise&lt;/td&gt;
&lt;td&gt;Verbose, based on C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Safety&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Type-safe, memory-safe&lt;/td&gt;
&lt;td&gt;Prone to null pointer issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Faster execution, optimized for Apple&lt;/td&gt;
&lt;td&gt;Slower due to runtime compilation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Learning Curve&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Easier for beginners&lt;/td&gt;
&lt;td&gt;Steeper, especially for modern devs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File Management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Single file (&lt;code&gt;.swift&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Requires header (&lt;code&gt;.h&lt;/code&gt;) and implementation (&lt;code&gt;.m&lt;/code&gt;) files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UI Frameworks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SwiftUI, UIKit&lt;/td&gt;
&lt;td&gt;UIKit only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Community Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Growing rapidly&lt;/td&gt;
&lt;td&gt;Mature but shrinking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Legacy Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited backward compatibility&lt;/td&gt;
&lt;td&gt;Excellent for older iOS versions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🚀 Why Developers Prefer Swift
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cleaner Code&lt;/strong&gt;: Swift reduces boilerplate and improves readability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety First&lt;/strong&gt;: Features like optionals and type inference help catch bugs early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Boost&lt;/strong&gt;: Swift apps often launch faster and use less memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Features&lt;/strong&gt;: Supports generics, closures, and functional programming.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏛️ Why Objective-C Still Matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Projects&lt;/strong&gt;: Many enterprise apps still use Objective-C.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C Compatibility&lt;/strong&gt;: Works well with C/C++ libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stability&lt;/strong&gt;: Less frequent changes, making it reliable for long-term maintenance.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you're starting fresh, &lt;strong&gt;Swift is the way to go&lt;/strong&gt;. But if you're maintaining older codebases or need deep system-level access, Objective-C still has its place.&lt;/p&gt;

&lt;p&gt;💡💡💡&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 UIKit: The Classic Framework
&lt;/h2&gt;

&lt;p&gt;UIKit has been around since the early days of iOS and is built on &lt;strong&gt;Objective-C&lt;/strong&gt;, though it works well with Swift too.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Pros:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mature &amp;amp; Stable&lt;/strong&gt;: Decades of development and community support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-Grained Control&lt;/strong&gt;: Precise management of views, animations, and transitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backward Compatibility&lt;/strong&gt;: Supports older iOS versions (as far back as iOS 9).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface Builder&lt;/strong&gt;: Visual UI design via Storyboards in Xcode.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Cons:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Verbose Code&lt;/strong&gt;: Requires more boilerplate and manual updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imperative UI Updates&lt;/strong&gt;: You must manually track and update UI state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steeper Learning Curve&lt;/strong&gt;: Especially for beginners unfamiliar with Objective-C patterns.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌱 SwiftUI: The Modern Approach
&lt;/h2&gt;

&lt;p&gt;Introduced in 2019, SwiftUI is a &lt;strong&gt;declarative&lt;/strong&gt; framework built entirely in Swift.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Pros:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Less Code, More Clarity&lt;/strong&gt;: Define what the UI should look like, and SwiftUI handles the rest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reactive Updates&lt;/strong&gt;: UI automatically updates when data changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Previews&lt;/strong&gt;: See changes instantly in Xcode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform&lt;/strong&gt;: Works across iOS, macOS, watchOS, and tvOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in Accessibility &amp;amp; Dark Mode&lt;/strong&gt;: Comes with modern design features out of the box.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Cons:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Limited to iOS 13+&lt;/strong&gt;: Not ideal for apps supporting older devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Still Evolving&lt;/strong&gt;: Missing some advanced features available in UIKit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging Can Be Tricky&lt;/strong&gt;: Especially with complex view hierarchies.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 When to Use Which?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Best Choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Supporting older iOS versions&lt;/td&gt;
&lt;td&gt;UIKit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Building modern apps for iOS 14+&lt;/td&gt;
&lt;td&gt;SwiftUI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need custom animations or advanced UI control&lt;/td&gt;
&lt;td&gt;UIKit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rapid prototyping or small apps&lt;/td&gt;
&lt;td&gt;SwiftUI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintaining legacy codebases&lt;/td&gt;
&lt;td&gt;UIKit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning iOS development today&lt;/td&gt;
&lt;td&gt;SwiftUI (easier to start with)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;You can also &lt;strong&gt;combine both&lt;/strong&gt; in a single project! SwiftUI can embed UIKit views using &lt;code&gt;UIViewRepresentable&lt;/code&gt;, and UIKit can host SwiftUI views with &lt;code&gt;UIHostingController&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠️📱 RxSwift and Combine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RxSwift and Combine are both reactive programming frameworks for Swift. RxSwift is a third-party library, while Combine is Apple's native framework.&lt;/p&gt;

&lt;p&gt;Core Data is Apple’s powerful framework for managing the &lt;strong&gt;model layer&lt;/strong&gt; of your iOS, macOS, watchOS, and tvOS apps. It’s not just a database—it’s an &lt;strong&gt;object graph management and persistence framework&lt;/strong&gt;. Let’s unpack what that means. 📦&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Core Data Does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stores data persistently&lt;/strong&gt; (usually in SQLite, but you don’t interact with SQL directly)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manages relationships&lt;/strong&gt; between objects (like users and their posts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracks changes&lt;/strong&gt; and supports undo/redo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syncs data&lt;/strong&gt; across devices using iCloud + CloudKit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetches and filters&lt;/strong&gt; data efficiently with queries&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧰 Key Components
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NSManagedObject&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your data model objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NSManagedObjectContext&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Workspace for creating, editing, and saving objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NSPersistentContainer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets up the Core Data stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;.xcdatamodeld&lt;/code&gt; file&lt;/td&gt;
&lt;td&gt;Visual editor for defining entities, attributes, and relationships&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NSFetchRequest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Used to query data from the store&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ How It Works (Simplified)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define your data model&lt;/strong&gt; in Xcode (e.g., &lt;code&gt;User&lt;/code&gt;, &lt;code&gt;Post&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create instances&lt;/strong&gt; of your entities using &lt;code&gt;NSManagedObject&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save changes&lt;/strong&gt; to the persistent store via &lt;code&gt;NSManagedObjectContext&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch data&lt;/strong&gt; using &lt;code&gt;NSFetchRequest&lt;/code&gt; with optional filters and sorting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync or migrate&lt;/strong&gt; data as your app evolves&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧪 Example: Creating a User
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;persistentContainer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;viewContext&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;UserEntity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Alice"&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Failed to save: &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Core Data is ideal for apps with complex data models, offline capabilities, or syncing needs. If you’re building something like a note-taking app, a task manager, or even a social feed, Core Data can be your best friend.&lt;/p&gt;

&lt;p&gt;UserDefaults is a super handy tool in iOS for storing &lt;strong&gt;small pieces of data persistently&lt;/strong&gt; — like user preferences, settings, or flags that help your app remember things between launches. Think of it as a lightweight key-value store baked right into the system. 🧠📦&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 What You Can Store with UserDefaults
&lt;/h2&gt;

&lt;p&gt;UserDefaults supports basic types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;String&lt;/code&gt;, &lt;code&gt;Int&lt;/code&gt;, &lt;code&gt;Float&lt;/code&gt;, &lt;code&gt;Double&lt;/code&gt;, &lt;code&gt;Bool&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;URL&lt;/code&gt;, &lt;code&gt;Data&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Array&lt;/code&gt; and &lt;code&gt;Dictionary&lt;/code&gt; (as long as their contents are property list types)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✍️ How to Use It in Swift
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Saving Data
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"isLoggedIn"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"launchCount"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔍 Retrieving Data
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;isLoggedIn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"isLoggedIn"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;launchCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"launchCount"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🧹 Removing Data
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;UserDefaults&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;standard&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;forKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧵 Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use it for &lt;strong&gt;small, non-sensitive data&lt;/strong&gt; only.&lt;/li&gt;
&lt;li&gt;Avoid storing large objects or complex models.&lt;/li&gt;
&lt;li&gt;Don’t use it for secure data like passwords — use &lt;strong&gt;Keychain&lt;/strong&gt; instead.&lt;/li&gt;
&lt;li&gt;For SwiftUI, you can use &lt;code&gt;@AppStorage&lt;/code&gt; to bind values directly to your views.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;@AppStorage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"isDarkMode"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;isDarkMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;UserDefaults is perfect for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remembering if onboarding was shown&lt;/li&gt;
&lt;li&gt;Storing theme preferences&lt;/li&gt;
&lt;li&gt;Tracking app usage stats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to see how it compares to Core Data or SwiftData for more complex storage? I can walk you through that too. 🧭📱&lt;/p&gt;

&lt;p&gt;🔐 &lt;strong&gt;Keychain in iOS&lt;/strong&gt; is Apple’s built-in system for securely storing sensitive data like passwords, cryptographic keys, and certificates. It’s designed to keep your private information safe while making it easy to access across your Apple devices.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 What You Can Store in Keychain
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Usernames &amp;amp; Passwords&lt;/strong&gt; for websites and apps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credit Card Info&lt;/strong&gt; (number, expiration, security code)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wi-Fi Credentials&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Passkeys&lt;/strong&gt; for passwordless login&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cryptographic Keys&lt;/strong&gt; for secure communication&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 How It Works
&lt;/h2&gt;

&lt;p&gt;Keychain encrypts your data using &lt;strong&gt;end-to-end encryption&lt;/strong&gt;, meaning only your device can decrypt it — not even Apple can access it. It integrates with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safari&lt;/strong&gt; for autofilling login credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apps&lt;/strong&gt; that support secure storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iCloud Keychain&lt;/strong&gt; to sync data across devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With iOS 18, Apple introduced a standalone &lt;strong&gt;Passwords app&lt;/strong&gt; that replaces the older Keychain interface in Settings, making password management more user-friendly.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Developer Use: Keychain Services API
&lt;/h2&gt;

&lt;p&gt;If you're building an app, you can use the &lt;strong&gt;Keychain Services API&lt;/strong&gt; to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store small secrets like tokens or passwords&lt;/li&gt;
&lt;li&gt;Retrieve and update secure items&lt;/li&gt;
&lt;li&gt;Control access with app-specific permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example in Swift:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"secret123"&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"user@example.com"&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;kSecClass&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;kSecClassGenericPassword&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;kSecAttrAccount&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;kSecValueData&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;using&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;utf8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kt"&gt;SecItemAdd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kt"&gt;CFDictionary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This stores a password securely in the Keychain.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Security Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;strong&gt;device-specific keys&lt;/strong&gt; and &lt;strong&gt;Face ID/Touch ID&lt;/strong&gt; for access&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;shared password groups&lt;/strong&gt; with trusted contacts&lt;/li&gt;
&lt;li&gt;Automatically suggests strong passwords and stores them securely&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Understanding &lt;strong&gt;iOS App States&lt;/strong&gt; is key to managing your app’s behavior and performance across its lifecycle. Let’s break down the five main states your app can be in:&lt;/p&gt;




&lt;h2&gt;
  
  
  🚦 iOS App Execution States
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Not Running&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;App is terminated or hasn’t launched yet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inactive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;App is in the foreground but not receiving events (e.g., during a phone call).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;App is in the foreground and receiving events — fully interactive.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;App is offscreen but still executing code (e.g., saving data, downloading).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Suspended&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;App is in memory but not executing code. iOS may terminate it to free resources.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔄 Typical Transitions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Launch&lt;/strong&gt;: &lt;code&gt;Not Running → Inactive → Active&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interruption&lt;/strong&gt;: &lt;code&gt;Active → Inactive&lt;/code&gt; (e.g., incoming call)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backgrounding&lt;/strong&gt;: &lt;code&gt;Inactive → Background → Suspended&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resuming&lt;/strong&gt;: &lt;code&gt;Suspended → Background → Inactive → Active&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Why It Matters
&lt;/h2&gt;

&lt;p&gt;Each state offers a chance to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save or restore data&lt;/li&gt;
&lt;li&gt;Pause/resume tasks&lt;/li&gt;
&lt;li&gt;Release resources&lt;/li&gt;
&lt;li&gt;Update UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You handle these transitions using &lt;strong&gt;AppDelegate&lt;/strong&gt; or &lt;strong&gt;SceneDelegate&lt;/strong&gt; methods like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;applicationDidBecomeActive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationWillResignActive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationDidEnterBackground&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationWillTerminate&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Let’s break down both &lt;strong&gt;push notifications&lt;/strong&gt; and &lt;strong&gt;rich notifications&lt;/strong&gt; in iOS so you can see how they work and how they differ. 📲✨&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Push Notifications in iOS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Push notifications&lt;/strong&gt; are messages sent from a server to a user’s device, even when the app isn’t running. They’re great for alerting users about updates, reminders, or promotions.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔧 How They Work:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Your app registers with &lt;strong&gt;Apple Push Notification Service (APNs)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;APNs provides a &lt;strong&gt;device token&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Your server uses this token to send notifications via APNs.&lt;/li&gt;
&lt;li&gt;The system delivers the notification to the user’s device.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🧰 Key Components:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UNUserNotificationCenter&lt;/strong&gt;: Manages notification delivery and interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UNNotificationRequest&lt;/strong&gt;: Defines the content and trigger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UNNotificationTrigger&lt;/strong&gt;: Specifies when to deliver (time, location, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛠️ Developer Setup:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enable Push Notifications in Xcode.&lt;/li&gt;
&lt;li&gt;Configure App ID and provisioning profile in Apple Developer Console.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;UNUserNotificationCenter&lt;/code&gt; to request permission and handle notifications.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎨 Rich Notifications in iOS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Rich notifications&lt;/strong&gt; are enhanced push notifications that include &lt;strong&gt;media&lt;/strong&gt; (images, videos, audio, GIFs) and &lt;strong&gt;interactive elements&lt;/strong&gt; like buttons or custom UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌟 Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;strong&gt;images, GIFs, videos, or audio&lt;/strong&gt; to make notifications visually engaging.&lt;/li&gt;
&lt;li&gt;Include &lt;strong&gt;action buttons&lt;/strong&gt; (e.g., “Reply”, “View”, “Dismiss”).&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;custom layouts&lt;/strong&gt; via Notification Content Extensions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧩 Required Setup:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add a &lt;strong&gt;Notification Service Extension&lt;/strong&gt; to modify the notification payload.&lt;/li&gt;
&lt;li&gt;Add a &lt;strong&gt;Notification Content Extension&lt;/strong&gt; to customize the UI.&lt;/li&gt;
&lt;li&gt;Include &lt;code&gt;mutable-content: 1&lt;/code&gt; in the payload to trigger the service extension.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧪 Example Use Case:
&lt;/h3&gt;

&lt;p&gt;A messaging app might show a photo preview in the notification and allow the user to reply directly from the lock screen.&lt;/p&gt;




&lt;h2&gt;
  
  
  🆚 Push vs Rich Notifications
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Push Notification&lt;/th&gt;
&lt;th&gt;Rich Notification&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Content&lt;/td&gt;
&lt;td&gt;Text only&lt;/td&gt;
&lt;td&gt;Text + media + actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interaction&lt;/td&gt;
&lt;td&gt;Tap to open app&lt;/td&gt;
&lt;td&gt;Buttons, reply, custom UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup Complexity&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Requires extensions &amp;amp; config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iOS Version Support&lt;/td&gt;
&lt;td&gt;iOS 10+&lt;/td&gt;
&lt;td&gt;iOS 10+ (some features newer)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💡 What Are In-App Purchases?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;In-App Purchases&lt;/strong&gt; let users buy digital goods or services directly within your app. Apple handles the payment process via the App Store, so developers don’t need to manage transactions manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Types of In-App Purchases
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Consumable&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can be used up and repurchased&lt;/td&gt;
&lt;td&gt;Game coins, extra lives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Non-Consumable&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Purchased once, never expires&lt;/td&gt;
&lt;td&gt;Remove ads, unlock premium features&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auto-Renewable Subscription&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recurring access to content&lt;/td&gt;
&lt;td&gt;Monthly music streaming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Non-Renewing Subscription&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Access for a fixed time, manual renewal&lt;/td&gt;
&lt;td&gt;Seasonal event pass&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ Example: Unlocking Premium Features
&lt;/h2&gt;

&lt;p&gt;Let’s say you have a &lt;strong&gt;note-taking app&lt;/strong&gt;. You want to offer a &lt;strong&gt;Pro version&lt;/strong&gt; that includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unlimited notes&lt;/li&gt;
&lt;li&gt;Cloud sync&lt;/li&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’d set up a &lt;strong&gt;non-consumable&lt;/strong&gt; IAP called &lt;code&gt;"pro_upgrade"&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Swift Code Snippet:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;StoreKit&lt;/span&gt;

&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;purchaseProVersion&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;SKPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;product&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;proProduct&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kt"&gt;SKPaymentQueue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payment&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once purchased, you unlock the features and store the purchase status securely (often using Keychain or server-side validation).&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Testing IAPs
&lt;/h2&gt;

&lt;p&gt;Use &lt;strong&gt;StoreKit Testing in Xcode&lt;/strong&gt; or &lt;strong&gt;TestFlight&lt;/strong&gt; with sandbox accounts to simulate purchases without spending real money.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What Is TestFlight?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TestFlight&lt;/strong&gt; is Apple’s official platform for &lt;strong&gt;beta testing iOS apps&lt;/strong&gt; before they’re released on the App Store. It allows developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share pre-release builds with testers&lt;/li&gt;
&lt;li&gt;Collect feedback and crash reports&lt;/li&gt;
&lt;li&gt;Test across multiple Apple platforms (iOS, iPadOS, macOS, watchOS, tvOS, visionOS)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧩 Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Invite up to &lt;strong&gt;100 internal testers&lt;/strong&gt; and &lt;strong&gt;10,000 external testers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Distribute builds via &lt;strong&gt;email invites&lt;/strong&gt; or &lt;strong&gt;public links&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Test builds for up to &lt;strong&gt;90 days&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Get feedback via screenshots, comments, and crash logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can learn more on &lt;a href="https://testflight.apple.com/" rel="noopener noreferrer"&gt;Apple’s official TestFlight page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Ways to Test iOS Apps
&lt;/h2&gt;

&lt;p&gt;Testing iOS apps involves multiple strategies depending on your goals and app complexity:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Unit Testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Tests individual functions or components&lt;/li&gt;
&lt;li&gt;Ensures logic works as expected&lt;/li&gt;
&lt;li&gt;Tools: &lt;code&gt;XCTest&lt;/code&gt; (built into Xcode)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;UI Testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simulates user interactions (taps, swipes, etc.)&lt;/li&gt;
&lt;li&gt;Validates layout and navigation&lt;/li&gt;
&lt;li&gt;Tools: &lt;code&gt;XCUITest&lt;/code&gt;, &lt;code&gt;Appium&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Integration Testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Verifies that different modules work together&lt;/li&gt;
&lt;li&gt;Useful for testing workflows like login or checkout&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Manual Testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hands-on testing on real devices or simulators&lt;/li&gt;
&lt;li&gt;Great for catching visual glitches and UX issues&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Automated Testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Runs scripted tests across devices and OS versions&lt;/li&gt;
&lt;li&gt;Speeds up regression testing and CI/CD pipelines&lt;/li&gt;
&lt;li&gt;Tools: &lt;code&gt;XCUITest&lt;/code&gt;, &lt;code&gt;Appium&lt;/code&gt;, &lt;code&gt;Testsigma&lt;/code&gt;, &lt;code&gt;Kobiton&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Beta Testing via TestFlight&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Real users test the app in real-world conditions&lt;/li&gt;
&lt;li&gt;Helps uncover usability issues and edge cases&lt;/li&gt;
&lt;li&gt;Feedback is collected directly in App Store Connect&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;real devices&lt;/strong&gt; for performance and sensor testing&lt;/li&gt;
&lt;li&gt;Combine &lt;strong&gt;manual + automated&lt;/strong&gt; testing for full coverage&lt;/li&gt;
&lt;li&gt;Prioritize &lt;strong&gt;user-centric testing&lt;/strong&gt; to improve UX&lt;/li&gt;
&lt;li&gt;Validate across &lt;strong&gt;multiple iOS versions and screen sizes&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🧭📲&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Programs</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 17:05:12 +0000</pubDate>
      <link>https://dev.to/harshpdev/programs-31kn</link>
      <guid>https://dev.to/harshpdev/programs-31kn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Find duplicates values program&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let arr = [2, 7, 3, 8, 2, 9, 8, 3]
var duplicates = Set&amp;lt;Int&amp;gt;()

for i in 0..&amp;lt;arr.count {
    for j in i+1..&amp;lt;arr.count {
        if arr[i] == arr[j] {
            duplicates.insert(arr[i])
        }
    }
}
print("duplicates values: \(duplicates) &amp;amp; count: (duplicates.count)")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;PrintNumberTriangle&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Foundation

func printNumberTriangle(rows: Int) {
    for i in 1...rows {
        var line = ""
        for j in 1...I {
            line += "\(j) "
        }
        print(line.trimmingCharacters(in: .whitespaces))
    }
}

printNumberTriangle(rows: 5)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Binary Search</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 13:04:25 +0000</pubDate>
      <link>https://dev.to/harshpdev/binary-search-2odg</link>
      <guid>https://dev.to/harshpdev/binary-search-2odg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Binary Search&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Binary Search is a searching algorithm for finding an element's position in a sorted array.&lt;/p&gt;

&lt;p&gt;Binary Search is a fundamental algorithm used to efficiently search for a target value in a sorted array. It reduces the time complexity to O(log n) by halving the search space at each step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Binary Search Program Swift&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Binary Search in Swift (Iterative Version)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func binarySearch(_ nums: [Int], _ target: Int) -&amp;gt; Int {
    var left = 0
    var right = nums.count - 1

    while left &amp;lt;= right {
        let mid = left + (right - left) / 2

        if nums[mid] == target {
            return mid
        } else if nums[mid] &amp;lt; target {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }

    return -1  // target not found
}

**🧪 Example Usage**

let array = [1, 3, 5, 7, 9, 12]
let target = 7
let result = binarySearch(array, target)

print("Index of \(target): \(result)") // Output: 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;✅ Binary Search in Swift (Recursive Version)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func binarySearchRecursive(_ nums: [Int], _ target: Int, _ left: Int, _ right: Int) -&amp;gt; Int {
    if left &amp;gt; right {
        return -1
    }

    let mid = left + (right - left) / 2

    if nums[mid] == target {
        return mid
    } else if nums[mid] &amp;lt; target {
        return binarySearchRecursive(nums, target, mid + 1, right)
    } else {
        return binarySearchRecursive(nums, target, left, mid - 1)
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;📌 Binary Search Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Search in sorted arrays&lt;br&gt;
Find floor/ceiling of a value&lt;br&gt;
Search in rotated arrays&lt;br&gt;
Search boundaries (first/last occurrence)&lt;br&gt;
Solving problems like:&lt;br&gt;
Peak element&lt;br&gt;
Koko Eating Bananas&lt;br&gt;
Minimum in Rotated Sorted Array&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func binarySearch(_ nums: [Int], target: Int) -&amp;gt; Int {
    var left = 0
    var right = nums.count - 1

    while left &amp;lt;= right {
        let mid = left + (right - left) / 2
        if nums[mid] == target {
            return mid
        } else if nums[mid] &amp;lt; target {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }
    return -1
}

// Example
let sortedArray = [0, 2, 6, 7, 9]
let targetElement = 6
let index = binarySearch(sortedArray, target: targetElement)
print("Element \(targetElement) found at index \(index)")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;📌 Find First and Last Position of Element in Sorted Array&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📝 Problem Statement&lt;/p&gt;

&lt;p&gt;Given a sorted array of integers nums and a target value target,&lt;br&gt;
return the starting and ending position of target in the array.&lt;/p&gt;

&lt;p&gt;If the target is not found, return [-1, -1].&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Optimal Solution (Binary Search)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’ll use two binary searches:&lt;/p&gt;

&lt;p&gt;One to find the first occurrence&lt;br&gt;
One to find the last occurrence&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func searchRange(_ nums: [Int], _ target: Int) -&amp;gt; [Int] {
    func findBound(_ findFirst: Bool) -&amp;gt; Int {
        var left = 0, right = nums.count - 1
        var index = -1

        while left &amp;lt;= right {
            let mid = left + (right - left) / 2

            if nums[mid] == target {
                index = mid
                if findFirst {
                    right = mid - 1  // search on left side
                } else {
                    left = mid + 1   // search on right side
                }
            } else if nums[mid] &amp;lt; target {
                left = mid + 1
            } else {
                right = mid - 1
            }
        }

        return index
    }

    let first = findBound(true)
    let last = findBound(false)
    return [first, last]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🧪 Example Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;let nums = [5,7,7,8,8,10]&lt;br&gt;
let target = 8&lt;br&gt;
let result = searchRange(nums, target)&lt;br&gt;
print(result)  // Output: [3, 4]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⏱️ Time &amp;amp; Space Complexity&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time&lt;/td&gt;
&lt;td&gt;O(log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Space&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Swift solution to solve the "Minimum Coins to Make Amount [Greedy Algorithm]</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 08:07:25 +0000</pubDate>
      <link>https://dev.to/harshpdev/swift-solution-to-solve-the-minimum-coins-to-make-amount-greedy-algorithm-mnk</link>
      <guid>https://dev.to/harshpdev/swift-solution-to-solve-the-minimum-coins-to-make-amount-greedy-algorithm-mnk</guid>
      <description>&lt;p&gt;&lt;strong&gt;Greedy Algorithm&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A greedy algorithm is an approach for solving a problem by selecting the best option available at the moment. It doesn't worry whether the current best result will bring the overall optimal result.&lt;/p&gt;

&lt;p&gt;The algorithm never reverses the earlier decision even if the choice is wrong. It works in a top-down approach.&lt;/p&gt;

&lt;p&gt;Problem: You have to make a change of an amount using the smallest possible number of coins.&lt;br&gt;
Amount: $18&lt;/p&gt;

&lt;p&gt;Available coins are&lt;br&gt;
  $5 coin&lt;br&gt;
  $2 coin&lt;br&gt;
  $1 coin&lt;br&gt;
There is no limit to the number of each coin you can use.&lt;/p&gt;

&lt;p&gt;Here's a Swift solution to solve the "Minimum Coins to Make Amount" problem using a greedy approach (which works optimally for standard denominations like 5, 2, 1):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Problem:&lt;/strong&gt;&lt;br&gt;
Given:&lt;/p&gt;

&lt;p&gt;amount = 18&lt;br&gt;
Unlimited supply of coins: [5, 2, 1]&lt;br&gt;
Goal:&lt;/p&gt;

&lt;p&gt;Find the &lt;strong&gt;minimum number of coins&lt;/strong&gt; required to make the amount.&lt;br&gt;
Return the list of coins used (optional).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Swift Solution&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func minimumCoins(for amount: Int, with coins: [Int]) -&amp;gt; (count: Int, usedCoins: [Int]) {
    var remaining = amount
    var result = [Int]()
    var totalCoins = 0

    // Sort coins in descending order for greedy approach
    let sortedCoins = coins.sorted(by: &amp;gt;)

    for coin in sortedCoins {
        while remaining &amp;gt;= coin {
            remaining -= coin
            result.append(coin)
            totalCoins += 1
        }
    }

    return (totalCoins, result)
}

// Example usage:
let coins = [5, 2, 1]
let amount = 18
let result = minimumCoins(for: amount, with: coins)

print("Minimum number of coins: \(result.count)")
print("Coins used: \(result.usedCoins)")

🧪 Output:

Minimum number of coins: 5
Coins used: [5, 5, 5, 2, 1]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;✅ To Solve This Correctly: Use Dynamic Programming&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s the correct Swift solution using bottom-up DP that works for all coin sets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func coinChange(_ coins: [Int], _ amount: Int) -&amp;gt; Int {
    if amount == 0 { return 0 }

    var dp = [Int](repeating: amount + 1, count: amount + 1)
    dp[0] = 0

    for i in 1...amount {
        for coin in coins {
            if i &amp;gt;= coin {
                dp[i] = min(dp[i], dp[i - coin] + 1)
            }
        }
    }

    return dp[amount] &amp;gt; amount ? -1 : dp[amount]
}

**🧪 Test Cases:**

print(coinChange([2], 3))         // Output: -1 ✅
print(coinChange([1,2,5], 18))    // Output: 5  ✅ (5+5+5+2+1)
print(coinChange([2,5], 11))      // Output: 3  ✅ (5+5+1 not possible, so 5+2+2+2)

print(coinChange([5, 2, 1], 18))   // Output: 5
print(coinChange([2], 3))         // Output: -1 ✅ Correct!
print(coinChange([1, 3, 4], 6))   // Output: 2 (3+3 or 2+4)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🔍 Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We use a dp[i] array where dp[i] represents the minimum coins needed to make amount i&lt;br&gt;
Initialize with amount + 1 (impossible value)&lt;br&gt;
At the end, if dp[amount] &amp;gt; amount, that means it's not possible to make the amount&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⏱ Time &amp;amp; Space Complexity:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Time: O(n × m), where n = amount, m = number of coins&lt;br&gt;
Space: O(n)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🧠 Top 16 Amazon Phone Interview Coding Questions (LeetCode)</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Tue, 15 Jul 2025 06:21:47 +0000</pubDate>
      <link>https://dev.to/harshpdev/top-16-amazon-phone-interview-coding-questions-leetcode-5bag</link>
      <guid>https://dev.to/harshpdev/top-16-amazon-phone-interview-coding-questions-leetcode-5bag</guid>
      <description>&lt;p&gt;Here’s a curated list of 16 real LeetCode problems frequently asked in Amazon phone interviews, based on historical data, mock interviews, and online reports.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Topic Tags&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/two-sum/" rel="noopener noreferrer"&gt;Two Sum&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;HashMap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/longest-substring-without-repeating-characters/" rel="noopener noreferrer"&gt;Longest Substring Without Repeating Characters&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Sliding Window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/merge-intervals/" rel="noopener noreferrer"&gt;Merge Intervals&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Intervals, Sorting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/group-anagrams/" rel="noopener noreferrer"&gt;Group Anagrams&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Hashing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/valid-parentheses/" rel="noopener noreferrer"&gt;Valid Parentheses&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/k-closest-points-to-origin/" rel="noopener noreferrer"&gt;K Closest Points to Origin&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Heap, Geometry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/maximum-subarray/" rel="noopener noreferrer"&gt;Maximum Subarray&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Kadane’s Algorithm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/search-in-rotated-sorted-array/" rel="noopener noreferrer"&gt;Search in Rotated Sorted Array&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Binary Search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/subarray-sum-equals-k/" rel="noopener noreferrer"&gt;Subarray Sum Equals K&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;HashMap, Prefix Sum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/3sum/" rel="noopener noreferrer"&gt;3Sum&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Two Pointers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/product-of-array-except-self/" rel="noopener noreferrer"&gt;Product of Array Except Self&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Prefix Product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/number-of-islands/" rel="noopener noreferrer"&gt;Number of Islands&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;DFS / BFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/lru-cache/" rel="noopener noreferrer"&gt;LRU Cache&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;LinkedHashMap / Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/clone-graph/" rel="noopener noreferrer"&gt;Clone Graph&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Graph, BFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/word-break/" rel="noopener noreferrer"&gt;Word Break&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;DP, Trie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/problems/minimum-window-substring/" rel="noopener noreferrer"&gt;Minimum Window Substring&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Hard&lt;/td&gt;
&lt;td&gt;Sliding Window, Hashing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;🎯 Prioritization Tips for Amazon:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ Practice &lt;strong&gt;hashmaps, arrays, strings, and sliding windows&lt;/strong&gt; heavily.&lt;br&gt;
✅ Be &lt;strong&gt;very comfortable with recursion and DFS/BFS&lt;/strong&gt; (especially for graphs &amp;amp; matrices).&lt;br&gt;
✅ Focus on &lt;strong&gt;medium-level problems,&lt;/strong&gt; especially &lt;strong&gt;edge cases and optimization.&lt;/strong&gt;&lt;br&gt;
✅ Practice &lt;strong&gt;dry runs and explaining aloud&lt;/strong&gt; (Amazon assesses communication during interviews).&lt;/p&gt;

</description>
    </item>
    <item>
      <title>✅ Swift Stack Using Array</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Mon, 14 Jul 2025 17:13:05 +0000</pubDate>
      <link>https://dev.to/harshpdev/swift-stack-using-array-2n5f</link>
      <guid>https://dev.to/harshpdev/swift-stack-using-array-2n5f</guid>
      <description>&lt;p&gt;Here's a simple and clean implementation of a Stack using an Array in Swift, including basic operations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;struct Stack&amp;lt;T&amp;gt; {
    private var elements: [T] = []

    // Push an element onto the stack
    mutating func push(_ value: T) {
        elements.append(value)
    }

    // Pop an element from the top of the stack
    mutating func pop() -&amp;gt; T? {
        return elements.popLast()
    }

    // Peek at the top element without removing it
    func peek() -&amp;gt; T? {
        return elements.last
    }

    // Check if the stack is empty
    func isEmpty() -&amp;gt; Bool {
        return elements.isEmpty
    }

    // Get the current size of the stack
    func size() -&amp;gt; Int {
        return elements.count
    }
}

🧪 Example Usage:

var stack = Stack&amp;lt;Int&amp;gt;()

stack.push(10)
stack.push(20)
stack.push(30)

print(stack.peek() ?? "Empty")  // Output: 30
print(stack.pop() ?? "Empty")   // Output: 30
print(stack.size())             // Output: 2
print(stack.isEmpty())          // Output: false

stack.pop()
stack.pop()
print(stack.isEmpty())          // Output: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>📚 What Are Data Structures and Algorithms?</title>
      <dc:creator>Harsh Prajapat</dc:creator>
      <pubDate>Mon, 14 Jul 2025 16:32:40 +0000</pubDate>
      <link>https://dev.to/harshpdev/what-are-data-structures-and-algorithms-4mmi</link>
      <guid>https://dev.to/harshpdev/what-are-data-structures-and-algorithms-4mmi</guid>
      <description>&lt;p&gt;&lt;strong&gt;🧱 Data Structures (DS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA stands for Data Structures and Algorithms. It is a fundamental concept in computer science that deals with organizing and storing data (data structures) and developing efficient methods for solving computational problems (algorithms). &lt;/p&gt;

&lt;p&gt;These are ways to organize and store data efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linear&lt;/strong&gt;: Array, Linked List, Stack, Queue&lt;br&gt;
&lt;strong&gt;Non-Linear&lt;/strong&gt;: Tree, Graph, Trie&lt;br&gt;
&lt;strong&gt;Hashing&lt;/strong&gt;: Hash Table (Dictionary/Map)&lt;br&gt;
&lt;strong&gt;Others&lt;/strong&gt;: Heap, Priority Queue, Set&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔁 Algorithms (Algo)&lt;/strong&gt;&lt;br&gt;
These are &lt;strong&gt;step-by-step procedures&lt;/strong&gt; for solving problems or performing tasks using data structures.&lt;/p&gt;

&lt;p&gt;Common categories:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sorting&lt;/strong&gt; – Bubble, Merge, Quick, Heap&lt;br&gt;
&lt;strong&gt;Searching&lt;/strong&gt; – Binary Search, BFS, DFS&lt;br&gt;
&lt;strong&gt;Recursion&lt;/strong&gt; &amp;amp; Backtracking&lt;br&gt;
&lt;strong&gt;Dynamic Programming (DP)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Greedy Algorithms&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Divide and Conquer&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Graph Algorithms&lt;/strong&gt; – Dijkstra, Kruskal, Prim&lt;br&gt;
&lt;strong&gt;Bit Manipulation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Learning Roadmap for DSA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Step 1: Master Basic Data Structures&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arrays, Strings&lt;br&gt;
Stack &amp;amp; Queue&lt;br&gt;
Linked List&lt;br&gt;
HashMap / HashSet&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Step 2: Learn Algorithms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sorting &amp;amp; Searching&lt;br&gt;
Recursion &amp;amp; Backtracking&lt;br&gt;
Binary Search on arrays &amp;amp; answers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Step 3: Advance to Trees &amp;amp; Graphs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Binary Tree / BST / Trie&lt;br&gt;
DFS/BFS, Union-Find&lt;br&gt;
Dijkstra / Bellman-Ford&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Step 4: Master Dynamic Programming&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Memoization vs Tabulation&lt;br&gt;
Knapsack, LIS, LCS, DP on Trees/Graphs&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔧 Want to Learn DSA for Free?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎓 Best Free Courses:&lt;/strong&gt;&lt;br&gt;
📘 DSA by Abdul Bari (YouTube)&lt;br&gt;
🎓 &lt;a href="https://www.youtube.com/watch?v=pkYVOmU3MgA" rel="noopener noreferrer"&gt;DSA in Python (freeCodeCamp)&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://www.coursera.org/specializations/data-structures-algorithms" rel="noopener noreferrer"&gt;Coursera - UCSD DSA Specialization (audit free)&lt;/a&gt;&lt;br&gt;
💡 &lt;a href="https://cs50.harvard.edu/x/2024/" rel="noopener noreferrer"&gt;CS50's Data Structures (includes C &amp;amp; Python)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 Practice Platforms:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://leetcode.com" rel="noopener noreferrer"&gt;LeetCode&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://www.hackerrank.com" rel="noopener noreferrer"&gt;HackerRank&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://www.geeksforgeeks.org/dsa/fundamentals-of-algorithms/" rel="noopener noreferrer"&gt;GeeksforGeeks&lt;/a&gt;&lt;br&gt;
🔗 Codeforces&lt;br&gt;
🔗 &lt;a href="https://www.interviewbit.com" rel="noopener noreferrer"&gt;InterviewBit&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://www.naukri.com/code360" rel="noopener noreferrer"&gt;CodeStudio (by Coding Ninjas)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a coding interview–focused DSA prep plan specifically designed to help you crack interviews at companies like Amazon, Google, Meta, Microsoft, and top startups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 30-Day Coding Interview Prep Plan (DSA)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Week 1: Core Foundations&lt;/strong&gt;&lt;br&gt;
Focus: Arrays, Strings, HashMaps&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Practice Problems&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Arrays&lt;/td&gt;
&lt;td&gt;Two Sum, Best Time to Buy/Sell Stock, Kadane’s Algorithm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strings&lt;/td&gt;
&lt;td&gt;Longest Substring w/o Repeat, Valid Anagram, Group Anagrams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hashing&lt;/td&gt;
&lt;td&gt;Subarray Sum Equals K, Top K Frequent Elements&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;➡️ Practice on: &lt;a href="https://leetcode.com/problem-list/array/" rel="noopener noreferrer"&gt;LeetCode Easy/Medium Arrays &amp;amp; Strings&lt;/a&gt;&lt;br&gt;
✅ Learn: Sliding Window, Prefix Sum, HashMap patterns&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Week 2: Linked List + Stack + Queue&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Practice Problems&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Linked List&lt;/td&gt;
&lt;td&gt;Reverse LL, Detect Cycle, Merge Two Sorted Lists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stack&lt;/td&gt;
&lt;td&gt;Valid Parentheses, Min Stack, Next Greater Element&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queue/Deque&lt;/td&gt;
&lt;td&gt;Sliding Window Maximum, Implement Queue using Stacks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;📘 Bonus: Understand two-pointer, fast/slow pointer, and monotonic stack techniques&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Week 3: Trees + Recursion + Backtracking&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Practice Problems&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Binary Trees&lt;/td&gt;
&lt;td&gt;Inorder Traversal, Max Depth, Path Sum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BSTs&lt;/td&gt;
&lt;td&gt;Validate BST, Lowest Common Ancestor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backtracking&lt;/td&gt;
&lt;td&gt;N-Queens, Subsets, Permutations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;🎯 Key Skill: Writing recursive functions and reasoning through tree traversal&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Week 4: Graphs + DP + Heaps&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Practice Problems&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Graphs&lt;/td&gt;
&lt;td&gt;Number of Islands, Clone Graph, Topological Sort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heaps&lt;/td&gt;
&lt;td&gt;K Closest Points, Merge K Sorted Lists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic Programming&lt;/td&gt;
&lt;td&gt;Fibonacci, House Robber, Longest Increasing Subsequence, 0/1 Knapsack&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;🧠 Bonus: Learn Union Find, Dijkstra, and Greedy Techniques&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔁 Daily Plan Example (2 Hours/Day)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15 min&lt;/strong&gt;: Revisit notes + quick warmup&lt;br&gt;
&lt;strong&gt;60 min&lt;/strong&gt;: Solve 2–3 problems (easy→medium)&lt;br&gt;
&lt;strong&gt;30 min&lt;/strong&gt;: Review + Debug + Optimize&lt;br&gt;
&lt;strong&gt;15 min&lt;/strong&gt;: Read discussions or official solutions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠 Tools for Success&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📘 Recommended Books:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cracking the Coding Interview&lt;/strong&gt; by Gayle Laakmann&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elements of Programming Interviews&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grokking the Coding Interview&lt;/strong&gt; (via Educative)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🎯 Final Week Prep (Before Interviews)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Practice behavioral questions: STAR format&lt;/li&gt;
&lt;li&gt;Review top Amazon / Google Top 100 LeetCode lists&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>dsa</category>
      <category>algorithms</category>
    </item>
  </channel>
</rss>
