{"id":276020,"date":"2025-06-06T00:22:02","date_gmt":"2025-06-06T00:22:02","guid":{"rendered":"https:\/\/peraltafinancing.com\/apple-2\/issue-655-ios-dev-weekly\/"},"modified":"2025-06-06T00:22:02","modified_gmt":"2025-06-06T00:22:02","slug":"issue-655-ios-dev-weekly","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=276020","title":{"rendered":"Issue 655 \u2013 iOS Dev Weekly"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Did you see the <a href=\"https:\/\/developer.apple.com\/tutorials\/develop-in-swift\">new Swift tutorials<\/a> Apple released this week? It\u2019s great to see more official tutorials appear, especially ones like these that target people brand new to programming, but as I was browsing the <a href=\"https:\/\/developer.apple.com\/tutorials\/develop-in-swift\/hello-swiftui\">first tutorial<\/a> it struck me what an amazing first introduction to programming this would be. The code in the tutorial was <em>so<\/em> clear and readable, and unlike Swift Playgrounds (which is great in its own way) these tutorials have you building an iOS app within minutes of opening the first tutorial. That\u2019s incredible.<\/p>\n<p>Before Swift arrived, I used to teach in-person training courses covering Objective-C and UIKit development. But even requiring a pre-requisite of being comfortable with developing in any other programming language, the first day of the course was learning Objective-C. There was just too much legacy knowledge from C needed to tackle it at the same time as dropping a firehose of UIKit on people. It all falls apart so quickly when you need to stop teaching UIKit to explain what an <code>NSNumber<\/code> is and why you need a pointer to one so you can wrap an int up before passing it to an API.<\/p>\n<p>But look at that <a href=\"https:\/\/imgur.com\/a\/MGc7BAr\">last screen of code from this tutorial<\/a>. It\u2019s <em>so<\/em> readable. That\u2019s not just because of SwiftUI, it\u2019s even just Swift, that\u2019s years of progress and centuries of person-hours that have gone into taking us from needing a very dry day (or more!) of learning about pointers and why <code>NSNumber<\/code> is even a thing ten years ago, to this today. \ud83e\udd2f<\/p>\n<p>Like many of you, I also have concerns about how complex Swift has become over the years, but there is none of that in sight when you start out. It was a lovely reminder that the complexities of worrying about strict concurrency warnings, typed throws, and non-copyable generics is not what people are faced with as they first approach the language and I\u2019d like to take a moment to congratulate everyone involved with the last decade or more of progress that made this tutorial possible. I\u2019ve not seen it in quite such a striking way as this before.<\/p>\n<p class=\"attribution\">\u2013 Dave Verwer<\/p>\n<p><a href=\"https:\/\/yo.bitrise.io\/bitrise-workflow-recipes-download.html\" class=\"link\" id=\"TXxfv3Q\">50+ CI\/CD Workflow Recipes for Peak Performance<\/a><\/p>\n<p>Explore Bitrise\u2019s curated workflow recipes, designed to speed up your mobile projects and improve performance. <a href=\"https:\/\/yo.bitrise.io\/bitrise-workflow-recipes-download.html\">Download now<\/a>.<\/p>\n<h2 class=\"category news\" id=\"news\">News<\/h2>\n<p><a href=\"https:\/\/www.swift.org\/blog\/embedded-swift-examples\/\" class=\"link\" id=\"xZN4pG3\">Embedded Swift on ARM and RISC-V Microcontrollers<\/a><\/p>\n<p>Work on embedded Swift has been progressing for quite some time now, but you might be surprised at the range of very tiny devices it now runs on. I had only heard of the Raspberry Pi Pico from this list, but there are many more. <a href=\"https:\/\/github.com\/kubamracek\">Kuba Mracek<\/a> fills us in on where things are and introduces the new <a href=\"https:\/\/github.com\/apple\/swift-embedded-examples\/\">embedded examples<\/a> source code repository!<\/p>\n<p><a href=\"https:\/\/useyourloaf.com\/blog\/xcode-bookmarks\/\" class=\"link\" id=\"u7jkgLD\">Xcode Bookmarks<\/a><\/p>\n<p>I\u2019ve written before about my <a href=\"https:\/\/iosdevweekly.com\/issues\/645#u8hUMEt\">struggles getting into the habit<\/a> of using the new Xcode bookmarks feature, but this article from <a href=\"https:\/\/twit.social\/@kharrison\">Keith Harrison<\/a> made me think about them differently. Not as something you\u2019d set up while working on a single feature or bug fix, but as a more permanent guide to the interesting and commonly visited pieces of a codebase. It\u2019s time to give them another try!<\/p>\n<h2 class=\"category code\" id=\"code\">Code<\/h2>\n<p><a href=\"https:\/\/www.swiftjectivec.com\/stupid-and-quick-persistency-on-ios-with-swift\/\" class=\"link\" id=\"6tateNl\">Quick and Painless Persistency on iOS<\/a><\/p>\n<p>SwiftData is significantly easier to adopt and use than Core Data, but I\u2019m still a fan of considering other options for small amounts of data storage before reaching for something that complex. <a href=\"https:\/\/mastodon.social\/@jordanmorgan\">Jordan Morgan<\/a> goes through a greatest hits of all the methods that are worth considering before breaking out a database or ORM.<\/p>\n<hr\/>\n<p><a href=\"https:\/\/byla.lt\/posts\/in-search-of-smooth-scroll\/\" class=\"link\" id=\"Q9cMMcO\">In Search of a Smooth Scroll<\/a><\/p>\n<p>I love this post from <a href=\"https:\/\/github.com\/pattio\">Edvinas Byla<\/a> on dropping back to AppKit to polish up an area of his app. You should read the whole piece, but make sure to read the conclusion as I\u2019ve not seen a fairer examination of the SwiftUI vs AppKit\/UIKit debate yet. He nailed it. \ud83d\udc4d<\/p>\n<hr\/>\n<p><a href=\"https:\/\/furbo.org\/2024\/03\/29\/app-store-subscriptions-and-family-sharing\/\" class=\"link\" id=\"U7dQowi\">App Store Subscriptions and Family Sharing<\/a><\/p>\n<p>If you used Apple\u2019s <a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/in-app_purchase\/implementing_a_store_in_your_app_using_the_storekit_api\">sample code for StoreKit<\/a>, you might also have the bug in your subscription code that <a href=\"https:\/\/mastodon.social\/@chockenberry\">Craig Hockenberry<\/a> talks about in this post:<\/p>\n<blockquote>\n<p>That code will work fine until you encounter a customer that has Family Sharing enabled, as most do. The issue is that the Product.SubscriptionInfo can contain multiple items, and the code above only checks the first one.<\/p>\n<\/blockquote>\n<p>It might be worth checking!<\/p>\n<hr\/>\n<p><a href=\"https:\/\/tanaschita.com\/swiftui-how-to-avoid-using-anyview\/\" class=\"link\" id=\"Q2JYZE4\">How to avoid using AnyView in SwiftUI<\/a><\/p>\n<p>The title of <a href=\"https:\/\/mastodon.social\/@tanaschita\">Natascha Fadeeva<\/a>\u2019s post says it all. She goes through three ways to avoid falling back to <code>AnyView<\/code> in this post. \ud83d\udc4d<\/p>\n<h2 class=\"category videos\" id=\"videos\">Videos<\/h2>\n<p><a href=\"https:\/\/www.youtube.com\/@AppleDeveloper\" class=\"link\" id=\"nyHQhwN\">Apple Developer channel on YouTube<\/a><\/p>\n<p>What\u2019s that? Is it a new Apple Developer YouTube channel a couple of months before this year\u2019s conference with a load of WWDC 2023 videos already uploaded? I wonder if we\u2019ll see quick uploads of this year\u2019s session videos or even simultaneous distribution alongside the official site?<\/p>\n<h2 class=\"category jobs\" id=\"jobs\">Jobs<\/h2>\n<p><a href=\"https:\/\/iosdevjobs.com\/jobs\/e-297126b8-2d63-45a4-8795-01ffc7cd650d\">Senior iOS Engineer &#8211; Voloco @ Resonant Cavity<\/a> \u2013 Voloco is the best mobile recording studio in the world! Small profitable company with an Engineering driven culture. We ship with minimal process and meetings. You\u2019ll work closely with the founders, who still regularly commit code. \u2013 <em>Remote (within US timezones) with some on-site work (United States in CA or MN)<\/em><\/p>\n<p>Don\u2019t forget to <a href=\"https:\/\/iosdevjobs.com\/post-a-job\">post any open positions you have available<\/a> on <a href=\"https:\/\/iosdevjobs.com\">iOS Dev Jobs<\/a>!<\/p>\n<h2 class=\"category finally\" id=\"finally\">And finally&#8230;<\/h2>\n<p>\u2026 <a href=\"https:\/\/blog.persistent.info\/2024\/03\/infinite-mac-nextstep.html\">and beyond<\/a>!<\/p>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Did you see the new Swift tutorials Apple released this week? It\u2019s great to see more official tutorials appear, especially ones like these that target people brand new to programming, but as I was browsing the first tutorial it struck me what an amazing first introduction to programming this would be. The code in the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11768],"tags":[15295,3554,15294,6039],"dealstore":[],"offerexpiration":[],"class_list":["post-276020","post","type-post","status-publish","format-standard","hentry","category-apple-2","tag-dev","tag-ios","tag-issue","tag-weekly"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Issue 655 \u2013 iOS Dev Weekly - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=276020\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Issue 655 \u2013 iOS Dev Weekly - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"Did you see the new Swift tutorials Apple released this week? It\u2019s great to see more official tutorials appear, especially ones like these that target people brand new to programming, but as I was browsing the first tutorial it struck me what an amazing first introduction to programming this would be. The code in the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=276020\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-06T00:22:02+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=276020#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=276020\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Issue 655 \u2013 iOS Dev Weekly\",\"datePublished\":\"2025-06-06T00:22:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=276020\"},\"wordCount\":896,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"keywords\":[\"Dev\",\"iOS\",\"Issue\",\"Weekly\"],\"articleSection\":[\"Apple\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=276020#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=276020\",\"url\":\"https:\/\/fivemor.com\/?p=276020\",\"name\":\"Issue 655 \u2013 iOS Dev Weekly - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"datePublished\":\"2025-06-06T00:22:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=276020#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=276020\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=276020#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Issue 655 \u2013 iOS Dev Weekly\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Issue 655 \u2013 iOS Dev Weekly - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=276020","og_locale":"en_US","og_type":"article","og_title":"Issue 655 \u2013 iOS Dev Weekly - Som2ny Network","og_description":"Did you see the new Swift tutorials Apple released this week? It\u2019s great to see more official tutorials appear, especially ones like these that target people brand new to programming, but as I was browsing the first tutorial it struck me what an amazing first introduction to programming this would be. The code in the [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=276020","og_site_name":"Som2ny Network","article_published_time":"2025-06-06T00:22:02+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=276020#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=276020"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Issue 655 \u2013 iOS Dev Weekly","datePublished":"2025-06-06T00:22:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=276020"},"wordCount":896,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"keywords":["Dev","iOS","Issue","Weekly"],"articleSection":["Apple"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=276020#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=276020","url":"https:\/\/fivemor.com\/?p=276020","name":"Issue 655 \u2013 iOS Dev Weekly - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"datePublished":"2025-06-06T00:22:02+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=276020#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=276020"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=276020#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Issue 655 \u2013 iOS Dev Weekly"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/276020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=276020"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/276020\/revisions"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=276020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=276020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=276020"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=276020"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=276020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}