[swift] Protocol types and naming
Mar 23, 2021, 7:00 PM
John Sundell recently wrote an article on the topic of categorizing and naming protocols in Swift. As I was reading it, I realized I had a different take on several ideas shared in the article.
But before I go into the details, I’d like...
[swift] Tips for parsing Swift code with SwiftSyntax
Mar 10, 2021, 6:00 PM
I recently worked on a project with a goal to consolidate and standardize localization efforts in a sizeable iOS application written in Swift. This app uses a 3rd party localization service that supports Over-The-Air (OTA) localization. In...
[ios] On iOS application architecture beyond MVC, MVVM, and VIPER
Oct 12, 2020, 6:00 PM
After years of building, researching, experimenting, and iterating on iOS application architectures, I’ve gathered my learnings and conclusions so far into a single document. This is a document I would love to have had when I first started...
[swift] Rounded border button
Mar 29, 2017, 6:00 PM
Buttons can sometimes be difficult to distinguish from labels in the iOS interfaces with a lot of text. One way to make a button more noticeable is to add a border with a rounded corner to a UIButton view.
Here is a complete...
[swift] How to create a serial queue with specified priority?
Feb 24, 2017, 6:00 PM
To create a serial queue, normally you would write something simple like this:
let queue = DispatchQueue(label: “com.mydomain.myqueue")
If you wanted to define a priority for that queue, you could have done that by retrieving a global...
[ios] What's the App Store file size of my app?
Feb 17, 2017, 6:00 PM
I was evaluating some libraries to include in the project and their size was considerably big. So I wanted to know how would that new library affect the size of my app. But I didn’t even know what’s the current size of my app. To find that...
[swift] Dynamic keyword
Feb 9, 2017, 6:00 PM
dynamic is a declaration modifier that you can apply to either function or variable declarations. It can only be used within a class and it tells the compiler to use dynamic dispatch over static dispatch.
Dynamic vs static dispatch