19 Oct 2017

I had a problem. The new iOS application that I’m working on – written 100% in Swift – was noticeably taking much longer to compile than should, given its size (~200 files). More concerning, it was suddenly a lot slower than only a couple of weeks prior. I needed to get to the root of the problem as soon as possible, before it got any worse. The first step was to add -Xfrontend -debug...

12 Mar 2017

Awesome Swift Playgrounds   A curated list of awesome Swift playgrounds. Contributing Please take a quick look at the contribution guidelines first. Thanks to all contributors; you rock! If you see a playground here that does not work anymore with the current release of Xcode or is not a good fit, please submit a pull request to improve this file or consider updating it. Thank you...

28 Feb 2017

Contibutions are welcome and highly appreciated!! You can do this by: opening an issue to discuss the current solution, ask a question, propose your solution etc. (also English is not my native language so if you think that something can be corrected please open a PR 😊) opening a PR if you want to fix bugs or improve something High level overview Domain The Domain is basi...

21 Feb 2017

As an iOS developer (currently addicted to Swift 😍). I have created apps from scratch, maintained apps and, been in a lot of different teams. In all my time in the industry, a saying has stuck with me: “If you can’t explain it, you don’t understand it”. So in an attempt to fully understand what I do on a daily basis, I’m creating a list of what, in my opinion, is essencial to any iOS dev...

16 Dec 2016

The Metaphor In this metaphor, doing things the quick and dirty way sets us up with a technical debt, which is similar to a financial debt. Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development. —Martin Fowler When programmers talk about technical debt, it's overwhelmingly negative. We ta...

06 Jun 2016

The Principles of OOD based on Uncle Bob articles.   S.O.L.I.D. The Single Responsibility Principle The Open Closed Principle The Liskov Substitution Principle The Interface Segregation Principle The Dependency Inversion Principle ? The Single Responsibility Principle A class should have one, and only one, reason to change. (read more) Example: proto...

05 May 2016

Localization in iOS from Interface Builder designed UI has never been without any problems. The right way of doing localization is by having multiple Strings files. Duplicating Nib or Storyboard files and then changing the language is not an acceptable method. Luckily Xcode 5 has improved this for Storyboards by introducing Base Localization, but I've personally come across several situa...

11 Apr 2016

If you have ever been stuck with project file conflicts in a multi collaborative developer environment in XCode it might be worth while adopting xcconfig files. My experience is that it reduces project file conflicts by moving build settings into separate files which are version tracked independently. I was first introduced to the concept many years ago at a local CocoaHeads meeting but ...

29 Feb 2016

Design Patterns implemented in Swift 3.0 A short cheat-sheet with Xcode 8.2 Playground (Design-Patterns.playground.zip). 👷 Project maintained by: @nsmeme (Oktawian Chojnacki) 🚀 How to generate README, Playground and zip from source: GENERATE.md Table of Contents Behavioral Creational Structural Behavioral In software engineering, behavioral design patterns are desi...