App architecture basics in SwiftUI Part 4: Services
Mar 22, 2021, 6:37 PM
This article is about adding a separated Services-layer to an app. A Services-layer is, in my opinion, the single best app architectural addition you can make, after the basic Model-View separation already implicit in SwiftUI. Where...
App architecture basics in SwiftUI Part 3: Module-separated layers
Feb 11, 2021, 5:37 PM
In the previous article, I looked at how SwiftUI’s data-driven changes force a basic separation between Model and View. The separation is limited in scope, requiring only that there exist a state value or observable object that...
App architecture basics in SwiftUI, Part 2: SwiftUI's natural pattern
Jan 18, 2021, 6:32 PM
In the previous article, I wrote a simple SwiftUI app. During the writing, I deliberately kept the code simple – writing code only when needed to satisfy user-facing goals. I want to take a closer look at the application architecture that...
App architecture basics in SwiftUI, Part 1: Coding through iteration and integration
Dec 31, 2020, 6:29 AM
In this series of articles, I’ll look at fundamental app architectural concepts and how they apply to an app written in SwiftUI.
To begin the series, I want to start with something small: a JSON feed reader app in SwiftUI. I want to...
22 short tests of combine – Part 3: Asynchrony
Aug 17, 2019, 8:16 PM
I wrote some experiments around Combine, Apple’s reactive programming framework, to gain insight into how Combine handles edge cases that have caused problems for me in other reactive programming frameworks.
Looking at everything in...
22 short tests of combine – Part 2: Sharing
Aug 16, 2019, 8:16 PM
I wrote some experiments around Combine, Apple’s reactive programming framework, to gain insight into how Combine handles edge cases that have caused problems for me in other reactive programming frameworks.
Looking at everything in...
22 short tests of Combine – Part 1: Protocols
Aug 15, 2019, 8:16 PM
I wrote some experiments around Combine, Apple’s reactive programming framework, to gain insight into how Combine handles edge cases that have caused problems for me in other reactive programming frameworks. How do subscriptions...
First impressions of SwiftUI
Jun 7, 2019, 9:39 PM
A little over a month ago, I released CwlViews and then followed up with an article suggesting that Apple might be about to release their own declarative views library. At WWDC this week, they did just that, releasing SwiftUI.
This article...
Declarative Views
May 3, 2019, 7:57 AM
In the previous article, I released CwlViews. Its key feature is a unique take on “declarative views”.
Most modern approaches to view frameworks use some form of declarative view construction. This has slowly evolved from...
Introducing CwlViews
Apr 28, 2019, 6:53 AM
CwlViews replaces the diverse collection of construction and management interfaces in Cocoa with a set of composable, declarative “binding” constructors. The result hides much of the busywork that dogs Cocoa application...
Article updates, 2018 edition
Oct 9, 2018, 6:16 AM
Over the last month or two, I’ve been slowly updating Cocoa with Love Swift projects and articles to Swift 4.2, Xcode 10, iOS 12 and mac OS 10.14. In a year without any massive new features or obvious changes to Swift, it’s...
A Farewell to StreamToMe
Sep 4, 2018, 5:34 AM
Last night, I removed my app StreamToMe from the iOS and Mac App Stores, after 9 years on sale. It’s a deeply sad experience for me – like I’ve lost a faithful pet – so I wanted to write a quick retrospective.
This will be a...
About
Dec 31, 1, 6:27 PM
I work as a software developer and consultant based in Melbourne, Australia.
I’ve written 198
articles on Cocoa with Love since the first in February 2008, including 46
in Swift and 152
in Objective-C.
App Architecture...
Search cocoawithlove.com:
Dec 31, 1, 6:27 PM
Copyright Matt Gallagher, 2020. All rights reserved. Code samples may be use in accordance with the ISC-style license at https://www.cocoawithlove.com/about.html
Archive
Dec 31, 1, 6:27 PM
Copyright Matt Gallagher, 2020. All rights reserved. Code samples may be use in accordance with the ISC-style license at https://www.cocoawithlove.com/about.html