Working with custom UIView designated initializers I have a UIView subclass, with a custom designated initializer. How should I handle the requirement to override initWithCoder:?
Cocoa’s mutable-subclass pattern is an antipattern We know we can’t mutate a mutable array while enumerating, and yes, we have to take care to avoid that. But wait a second—why is that *our* problem, as users of Apple’s Foundation framework?
Be Proactive: Use Reactive A high-level, easy-to-grasp intro to the core concepts behind reactive programming.
Casting in Swift 1.2: a brief summary Swift 1.2, in beta with Xcode 6.3, makes some changes to casting. Here’s how as, as?, and as! work: * as is for guaranteed conversions. That is, use as when the compiler can type-check that the conversion is valid; and Swift won’t compile a as cast it …
IBOutlet declarations in Swift Xcode’s default IBOutlet declarations are weak references to implicitly unwrapped optionals. This is wrong.
Subjective-C: I use property (dot) syntax liberally I have long argued that methods which look, walk, and talk like getter methods should be called with dot syntax.
A list of Auto Layout DSLs, Categories, Etc. Everyone has their own Auto Layout helpers. Here’s a list.
Why non-engineers should care about “Technical Debt” Technical debt is an abstract concept, but it will impact your customers in tangible ways.
Why Reactive programming techniques are valuable Reactive programming gives us better tooling to deal with mutable state.
Real World Singleton Design A discussion of practical architectural concerns when designing a singleton for a real-world iOS application.
Let’s talk about Optionals There has been much complaining that Swift's Optional type forces you to think about whether something may be nil at every use, but aren’t we thinking about that already, just maybe implicitly? Swift’s optionals simply formally enforce the thinking we already must consider when writing (or …
Benefits of Cocoa: Still here in Swift Until now we all agreed these were benefits of Cocoa: * C compatibility * Dynamic dispatch * Nil safety * Duck typing Now they're all bad? — Nick Lockwood (@nicklockwood) August 6, 2014 Sigh. Okay, let’s take this one item at a time: C compatibility Still there. Nil safety Was never there …
Tech Debt and Refactoring Refactor as necessary to avoid adding tech debt during day-to-day. Add tests and rearchitect during the normal development cycle when adding to a preexisting codebase. Taking the time to do things right makes everything take a little longer than it strictly needs to, but it allows you to avoid unpredictable …