Arek Holko

Surprising behavior of non-optional @NSManaged properties

Core Data is not a first-class citizen in the Swift world. Its inherently dynamic nature is lurking at us through an attribute created specifically for it: @NSManaged. Let me show you how this dynamic nature caught me off guard. I ended up with a property having a value I’d never assigned to it!

Read more →

Catching Leaky View Controllers Without Instruments

One of the well-known techniques for finding memory leaks caused by retain cycles is checking if all view controllers get deallocated when they’re not on screen anymore. This is a process that should be manually repeated before each release but it’s both unpleasant and error-prone. Wouldn’t it be cool if we could learn about UIViewController leaks earlier in the process, during the day-to-day development?

Read more →

Avoiding Third-Party UI Libraries

There’s been some discussion recently in the iOS community about pros and cons (OK, mostly cons) of using third-party dependencies. Many arguments I saw were rather generic — grouping all third-party libraries into one basket. As with most things, though, it’s not that simple. So, let’s try to focus on a single case today: should we avoid using third-party UI libraries?

Read more →

Introducing IBAnalyzer

I'm happy to announce the release of my new tool called IBAnalyzer. Its aim is to allow you to catch common xib and storyboard-related issues without running an app or writing unit tests.

Read more →

Imagining Dependency Injection via Initializer with Storyboards

Storyboards, both their good and bad parts, are something I already analyzed in the past. To recap, they just don’t feel like the first class citizen in the Swift world. Third party tools can help but only with some of the issues, e.g. SwiftGen allows us to minimize the usage of “stringly typed” APIs.

At the end of the day though storyboards can be completely fixed only by Apple. So, let’s see how Apple could improve the biggest pain point there is – the lack of dependency injection via initializer.

Read more →