I’m pretty sure there are lot of tutorials about mixing ObjectiveC with Swift in both ways. But most of them are covering only normal projects. If you have framework in which you need to mix both languages, you cannot create simple bridging header because you will hit “using bridging headers with framework targets is unsupported” error. What to do then?Continue reading

Probably you saw many JSON parsing examples, but this one is really easy. And available out of the box with Swift 4.
All you have to do is create models from Codable superclass, and use:

Check out provided playground here!

Output in console should be:

As you probably notices, simple screen drawing is useless if it comes to OpenGL view. So is it possible to generate UIImage from such? Of course, lets suppose your custom drawing class extends UIView, then just add:

This code works in XCode 9 and Swift 3.x.

Sooner or later, you will face the problem with object which are not deallocating. How to check if object gets deallocated? Just use deinit method like below:

If you won’t see such message when you think you class should be gone, the easiest way is to debug allocations. Because the most common reason for such behavior are strong references, you can print allocation counter this way:

But where to put this? First of all, in all you initialization methods. Just add some those prints after each few lines, and you should see where counter is growing. The same in cleanup methods, or if you dont have any, you can put this somewhere when your view controller is closing, like:

And how to avoid strong references? The most common mistake, is using self in blocks, this is the place where you should use [unowned self], this way:

Are you still using self.interfaceOrientation and getting deprecation warning? Well, don’t. Not only because it is depracated, but it can give you wrong result. Device might be in landscape mode, but a view controller that only supports portrait will remain in portrait. Solution for everything is:

which will not only return correct orientation, but also result is UIInterfaceOrientation enum so you don’t need to change your switches.