Build Time, Compilation Modes and Tools

Image for post
Image for post

In this article, I write about:

  • Analyzing XCode Projects Build Time with XCLogParser.
  • Analyzing Swift Code with Sitrep.
  • How I decreased our iOS Project Debug Build-Time by 40%!
  • How a Swift compiler bug made our Release-builds take roughly 50 minutes (and how I solved that problem).

Debug-Mode.

A few months ago I set out to decrease our project compile-time. …


Image for post
Image for post
Great animation by Owen Chikazawa

A while ago I wrote an article about a Modular Architecture in iOS. I had to leave many details out to keep it short and readable. So, I’d like to expand a little and write about some details.

Some of the things I will cover in this article:

  • Types of dependencies.
  • Sharing fonts among modules and the app.
  • Sharing images and asset catalogs.
  • Working with Bundles and Storyboards.
  • The Boundaries of a module.

Everything will be in the context of an application that is comprised of a set of modules: core (for entities and business logic), networking, and scenes modules (like a login scene and a home scene). …


Image for post
Image for post
Great animation comes from Owen Chikazawa

Intro

In large scale projects, and arguably in any project, the capability for creating, running and testing parts in isolation is a necessity. A change in one part should not require to recompile the entire app until it is really necessary.

In this article, I’m going to explain how we can create a modular architecture using Cocoapods and Xcode. Something that looks like this:

Image for post
Image for post

Motivation

Imagine we need to make a small change in a screen and try it out to see if that change works. If the app we are working on is built monolithically as a single product, we will need to recompile the entire codebase to see the results. …

About

Leandro Pérez

Software Engineer, coding since 2001. I have done plenty of work in iOS with Objective-C and Swift.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store