Themes are usually downplayed as an after-thought instead of being an integral part of the development process. How many times have you inherited a codebase where the design team wants to tweak it, or business wants you to clone the app with a whole different theme. In this post, I’m going to show you the native way of theming an iOS app as intended by Apple that is often overlooked.
The topic of iOS app architecture has evolved a long way from MVC. Unfortunately, the conversation becomes a frameworks and patterns war. The reality is: Rx is a framework; MVVM is a presentation pattern; and so on. Frameworks and patterns always come and go, but architectures are timeless. In this post, we will examine the Clean Architecture for building scalable apps in iOS.
Many techniques have been tried to tame the AppDelegate beast, usually ending up in moving code into private functions or extensions. However, the AppDelegate is much more complex than just moving code around. In this post, let’s examine a pluggable service technique with a few bonuses at the end.
Let’s use the closure-based pattern to wrap CLLocationManager for allowing callers to subscribe to observables instead of using shared delegate functions.
GCD is not for thread-unsafe shared resources since it does not guarantee the same thread will be used for the queue. We can use the threads API with a bit of sugar syntax.
WordPress has been around for almost a decade and a half. It survived the CMS wars and remained relevant during the mobile shift. It’s been battle-tested under various scenarios and load. It showed us what a thriving 3rd party marketplace looks like. Now, WordPress is realizing a grander vision! In the release of WordPress 4.7, the REST API plugin was merged […]
Due to the many screen sizes in the mobile world, staying relative to screen size is crucial. Hard-coding margins and sizes based on points can be short-sighted. In this post, we will subclass NSLayoutConstraint to achieve percentage-based margins.
It is clear from this year’s WWDC that Apple envisions a new era beyond the traditional apps-in-a-grid-on-your-home-screen model. iOS 10 is more of a revolutionary iteration to the Apple ecosystem and vision. There were many initiatives uncovered that gives us clues to the future of Apple.
Less code and less memory while performing the same task at hand is truly where the art comes in. In this post, I’d like to highlight some of the various pitfalls that lead to memory leaks, which inevitably result in crashes. I will also cover some tools and remedies to resolve these issues.
Swift is a powerful and fun language. Its protocol-oriented nature allows you to do retroactive modeling and promotes composition over inheritance. In this series of posts, I will share Swift snippets that I’ve used across projects that I feel are really helpful in rapid development.
Adding, updating, and removing query string parameters is a common use case, but very tedious. This Swift function will help make it easy and pleasant leveraging NSURLComponents.
CocoaPods are a must for any serious iOS project. Why reinvent the wheel when the community has produced robust and feature-rich plugins? In this post, I’d like to highlight the best CocoaPods I’ve used in real-world project that are also Swift-friendly.
One of the limitations of WatchKit is being able to schedule notifications. This must be done in the iOS target since the notifications architecture resides in the iPhone, not the Apple Watch. In this post, I would like to show you to get around this and get WatchKit to schedule notifications on the iPhone.
There are various ways to persist data in the Apple ecosystem. They range from simple to complex. In this post, learn how easy it is to use App Groups and NSUserDefaults to share data between Apple Watch WatchKit and iPhone iOS using Swift.