<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[SwiftBlade - Medium]]></title>
        <description><![CDATA[Stories about Swift, Xcode, iOS and general software development - Medium]]></description>
        <link>https://medium.com/swiftblade?source=rss----d496aaac9309---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>SwiftBlade - Medium</title>
            <link>https://medium.com/swiftblade?source=rss----d496aaac9309---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 24 Apr 2026 05:21:48 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/swiftblade" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Pitfalls of `lazy var`]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/pitfalls-of-lazy-var-f6970ddcb047?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/2600/0*30l4hWzPTYLdd2a9" width="5926"></a></p><p class="medium-feed-snippet">Although lazy var can help improve performance by creating complex objects only when you need them, I think we should avoid overusing it&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/pitfalls-of-lazy-var-f6970ddcb047?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/pitfalls-of-lazy-var-f6970ddcb047?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/f6970ddcb047</guid>
            <category><![CDATA[swift]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Fri, 12 Jul 2024 04:35:31 GMT</pubDate>
            <atom:updated>2024-07-12T04:35:31.905Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How to programmatically disable “Menu” button on AppleTV remote]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/how-to-programmatically-disable-menu-button-on-appletv-remote-33d33eb2c59b?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/1222/1*fEPeMP7svojvhzWCs8HVqQ.png" width="1222"></a></p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/how-to-programmatically-disable-menu-button-on-appletv-remote-33d33eb2c59b?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/how-to-programmatically-disable-menu-button-on-appletv-remote-33d33eb2c59b?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/33d33eb2c59b</guid>
            <category><![CDATA[apple-tv]]></category>
            <category><![CDATA[tvuikit]]></category>
            <category><![CDATA[tvos]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Tue, 12 Mar 2024 15:39:43 GMT</pubDate>
            <atom:updated>2024-03-12T15:39:42.637Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How to run Xcode test multiple times]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/how-to-run-xcode-test-multiple-times-69c8a278dc3f?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/942/1*j8fpdwchREd7SX-kTJxSqQ.png" width="942"></a></p><p class="medium-feed-snippet">iOS lightning blog &#x26A1;&#xFE0F;</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/how-to-run-xcode-test-multiple-times-69c8a278dc3f?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/how-to-run-xcode-test-multiple-times-69c8a278dc3f?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/69c8a278dc3f</guid>
            <category><![CDATA[xcode]]></category>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[xctest]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Sun, 19 Nov 2023 09:18:24 GMT</pubDate>
            <atom:updated>2023-11-19T09:18:24.019Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Tips for designers from mobile app developers]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/tips-for-designers-for-working-with-native-mobile-apps-7a14e32167bd?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/2600/1*mzjXcjDUGtJMh9z9Qz-Xcg.jpeg" width="4032"></a></p><p class="medium-feed-snippet">I want share some tips to help designers understand better on what are easy and what are hard to do for mobile developers.</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/tips-for-designers-for-working-with-native-mobile-apps-7a14e32167bd?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/tips-for-designers-for-working-with-native-mobile-apps-7a14e32167bd?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/7a14e32167bd</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[ux-design]]></category>
            <category><![CDATA[ios-development]]></category>
            <category><![CDATA[mobile-design]]></category>
            <category><![CDATA[android-development]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Thu, 29 Jun 2023 11:24:07 GMT</pubDate>
            <atom:updated>2023-11-19T15:37:20.713Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Understanding UIViewController’s viewIsAppearing(_:)]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/understanding-uiviewcontrollers-viewisappearing-4ba7c853e1aa?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/936/1*uPiMoQo4XiDqS07cN1vgUw.jpeg" width="936"></a></p><p class="medium-feed-snippet">Today I met this function of UIViewController called viewIsAppearing(_:). Let&#x2019;s take a closer look at what it does.</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/understanding-uiviewcontrollers-viewisappearing-4ba7c853e1aa?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/understanding-uiviewcontrollers-viewisappearing-4ba7c853e1aa?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/4ba7c853e1aa</guid>
            <category><![CDATA[ios-development]]></category>
            <category><![CDATA[uikit]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[uiviewcontroller]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Thu, 29 Jun 2023 08:30:46 GMT</pubDate>
            <atom:updated>2024-03-07T02:36:16.395Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[UIStackView removeArrangedSubview doesn’t actually remove the subview.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/uistackview-removearrangedsubview-doesnt-actually-remove-the-subview-84085bd87a9a?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/600/1*2kE2CGQZo_xNozlI_0Up_g.jpeg" width="600"></a></p><p class="medium-feed-snippet">Today I tried calling UIStackView&#x2019;s removeArrangedSubview() to remove the red &#x201C;Hello world&#x201D; label. I noticed that instead of the view&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/uistackview-removearrangedsubview-doesnt-actually-remove-the-subview-84085bd87a9a?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/uistackview-removearrangedsubview-doesnt-actually-remove-the-subview-84085bd87a9a?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/84085bd87a9a</guid>
            <category><![CDATA[uistackview]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Fri, 19 May 2023 17:07:39 GMT</pubDate>
            <atom:updated>2023-05-19T17:07:39.619Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Hidden gem of UINavigationBar — scrollEdgeAppearance]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/a-hidden-gem-of-uinavigationbar-506a9cf21618?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/862/1*oZKsEQTfuiiDod7x_2fj3g.png" width="862"></a></p><p class="medium-feed-snippet">This week I discovered a property of UINavigationBar called scrollEdgeAppearance, which is introduced since iOS 13. How it works feels a&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/a-hidden-gem-of-uinavigationbar-506a9cf21618?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/a-hidden-gem-of-uinavigationbar-506a9cf21618?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/506a9cf21618</guid>
            <category><![CDATA[uinavigationbar]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[ios-development]]></category>
            <category><![CDATA[technology]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Sun, 07 May 2023 10:31:33 GMT</pubDate>
            <atom:updated>2023-05-19T15:10:27.796Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Using Swift Concurrency with Coordinator Pattern]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/using-swift-concurrency-with-coordinator-pattern-de290b95f09b?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/2600/1*OnU6lH0euVIceVKegmYqgg.jpeg" width="5312"></a></p><p class="medium-feed-snippet">Coordinator pattern is a way to encapsulate a flow in the app. It is an async task. What if we try to use async/await with it?</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/using-swift-concurrency-with-coordinator-pattern-de290b95f09b?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/using-swift-concurrency-with-coordinator-pattern-de290b95f09b?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/de290b95f09b</guid>
            <category><![CDATA[coordinator-pattern]]></category>
            <category><![CDATA[app-architecture]]></category>
            <category><![CDATA[swift]]></category>
            <category><![CDATA[swift-concurrency]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Sun, 26 Feb 2023 14:15:32 GMT</pubDate>
            <atom:updated>2024-09-02T01:26:36.469Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Exploring ways to validate Swift URL constants]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/exploring-ways-to-validate-swift-url-constants-2a938fbadf?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/600/1*wUjqBeZrX0oij9S_5SfLRQ.jpeg" width="600"></a></p><p class="medium-feed-snippet">First blog for 2023! Hope everyone has a good long break. Without ado, let&#x2019;s dive in!</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/exploring-ways-to-validate-swift-url-constants-2a938fbadf?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/exploring-ways-to-validate-swift-url-constants-2a938fbadf?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/2a938fbadf</guid>
            <category><![CDATA[swift]]></category>
            <category><![CDATA[ios-development]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[swift-programming]]></category>
            <category><![CDATA[unit-testing]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Mon, 02 Jan 2023 08:53:18 GMT</pubDate>
            <atom:updated>2023-01-11T02:25:44.648Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[System Design Interview — Async username lookup (senior iOS engineer)]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/swiftblade/system-design-interview-async-username-lookup-senior-ios-engineer-ae6e587c3f0a?source=rss----d496aaac9309---4"><img src="https://cdn-images-1.medium.com/max/2600/1*dFVHpD-r-QXYaSKRLdephg.jpeg" width="4592"></a></p><p class="medium-feed-snippet">My mistakes and lessons learned</p><p class="medium-feed-link"><a href="https://medium.com/swiftblade/system-design-interview-async-username-lookup-senior-ios-engineer-ae6e587c3f0a?source=rss----d496aaac9309---4">Continue reading on SwiftBlade »</a></p></div>]]></description>
            <link>https://medium.com/swiftblade/system-design-interview-async-username-lookup-senior-ios-engineer-ae6e587c3f0a?source=rss----d496aaac9309---4</link>
            <guid isPermaLink="false">https://medium.com/p/ae6e587c3f0a</guid>
            <category><![CDATA[system-design-interview]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[interview]]></category>
            <category><![CDATA[interview-preparation]]></category>
            <category><![CDATA[interview-tips]]></category>
            <dc:creator><![CDATA[Thongchai Kolyutsakul]]></dc:creator>
            <pubDate>Thu, 08 Dec 2022 13:44:59 GMT</pubDate>
            <atom:updated>2022-12-13T07:41:02.753Z</atom:updated>
        </item>
    </channel>
</rss>