CIFilters can be hard. What can be harder is if you try to animate them. This week I'm going to try to teach y'all how to successfully animate a CIFilter. There are many pitfalls along the way to watch out for though! But don't worry. I'm here for you. It'll all be ok.
Viewing entries tagged
Over time, Apple has given us quite a few tools that make graphic design easier for us to do in our own apps. Unfortunately, we've come to rely on our fellow graphic designers to do a lot of the grunt work for us, even though tools like Xcode 6 give us the capability to do it ourselves. Hopefully, with this article, we can learn some things that can prevent our fellow graphic designers from going postal and doing things like printing out 1x, 2x, and 3x image assets on paper and stapling them to our faces.
Subclassing can suck. There are so many ways to get it wrong and it's so easy to fall into anti-patterns when you create such a tight coupling between two classes. Most of the time, the need for subclassing can actually be replaced by abstraction through protocol-oriented, value-oriented, and functional programming. In fact, I may even argue that doing it that way can far outweigh the "benefits" of subclassing the majority of the time.
I often find myself worrying about retain cycles in my code. I feel like this is a common concern amongst others as well. I don't know about you, but it seems like I am constantly hearing "When am I supposed to use weak? And what the hell is this 'unowned' crap?!" The issue we find is that we know to use strong, weak, and unowned specifiers in our swift code to avoid retain cycles, but we don't quite know which specifier to use. Fortunately, I happen to know what they are AND when to use them! I hope this guide helps you to learn when and where to use them on your own.