Xcode 7.3 Crashes With Non-ObjC Properties in Classes

On March 21, 2016, the world celebrated the release of Xcode 7.3 Official! 🎉

If you’re anything like me, you quickly downloaded the DMG (not from the AppStore), updated all your code, your dependencies, excitedly ran your app for the first time in this bright, new world, and…

It crashed. Not only that, but the stack trace was anything but helpful. What even is realizeClass(objc_class*)?

I’m going to show you how to fix this, without having to resort to going back to Xcode 7.2.


Easier Enums with Private Types

In Swift, I try to use protocols as often as I can. I also like to use enums as often as is appropriate. Often times I find myself with an enum conforming to some protocol or another. For every property I implement, I have to switch self to get the right value – and this can get really old, really fast.

Luckily, Swift lets you have private types that you can use to make your enums a whole lot shorter! This is just a quick tip that I came across the other day. You won’t believe what comes next!


Using Xcode and Swift Package Manager Together

If you’re developing in Swift and using the Swift Package Manager to manage your dependencies, you may have noticed that you can’t easily use Xcode to write your project. You aren’t able to import any of your dependencies into your package, and so tons of errors appear.

This is how I created a new project and integrated it with my dependencies build with spm.


Value Types in Swift

Swift has reference types and value types. Even within the value types, there are different options to use! It can be kind of confusing to know when to use which. Knowing a little bit about what types work in which situations can really help out.

Here are some of the ways I differentiate the different value types in my own head, and some rules of thumb of when I use which.


Swift Protocol Extension Weirdness

Swift is a protocol oriented language, and I’ve found I can really provide a lot of power as well as flexibility by making good use of protocols.

The other day I was chasing down a confusing bug. For some reason my protocol methods weren’t being called!

It turns out protocol extension methods can be unintuitive sometimes.