A coworker sent me a link to this posting on the state of libraries on iOS. I sent back a quick reply, with the intent to write a blog post on the subject later.
I’ve since decided that this replay says almost everything I wanted to say, so I decided to just edit it a bit.
I’m pretty torn on this whole subject. Dynamic libraries can lead to inefficiencies in storage space if a developer isn’t careful, and I’ve no reason to believe iOS developers are careful. Include Google Toolbox for one function? Sure, why not? Apple’s always balanced the experience towards users, and even when it makes my life more difficult I like that.
Continue reading “On Frameworks”
When you’re using a navigation controller, the title of the back button on a particular view controller is pulled from the view it leads to.
Although this can be initially confusing, this actually makes a lot of sense. If two different view controllers (say, Circles and Squares) might push the same view controller (Details), shouldn’t the text in the top left of that view controller depend on which controller pushed it (Circles or Squares)?
Continue reading “Change back button title”
I don’t know much about pricing products as a developer. While I’m a programmer, I don’t have apps of my own yet. So take this with a grain of salt, go ahead and flame me, etc. These are just my feelings.
But nevertheless, I wanted to share how I feel about pricing as a user of software.
I’m going to start with something bold, then work my way back to it: Never let me perceive your product’s pricing is unstable and currently at a high.
Continue reading “Empathy in pricing”
When you start using Grand Central Dispatch or
NSOperation, you’ll want to perform some actions on the main thread and some intentionally off the main thread.
This is a simple and obvious technique, but it took me a while to adopt it: You can do by asserting with
[NSThread isMainThread], just as you would assert any other condition.
Continue reading “Check your thread”
Assertions are a great tool. As an Objective-C programmer, I use
For various reasons, you sometimes can’t use
NSAssert in a block easily. I’m going to explain why and describe a new macro,
BlockAssert, which solves this.
Continue reading “Presenting BlockAssert”
Over the years I have tweaked which compiler warnings I use. There’s one in particular that I used to turn on but will turn off from now on:
GCC_WARN_SHADOW is essentially drawing your attention to you possibly doing something other than you intended. This is like most warnings, but the difference is that the behaviour
GCC_WARN_SHADOW is blocking is very useful.
Continue reading “Against GCC_WARN_SHADOW”
You probably know
CGRectMake, but did you know it’s not the only way to make rectangles? It’s not even the best way, really.
There’s also C99 initializer syntax.
The main advantage to the C99 syntax is that it gives you some very Objective-C like syntax, where the fields are close to the values rather than implied by positioning. (That’s not to say this is intentionally similar, or that it’s the only advantage. But it is nice.) It also provides type checking, and since fields are named it catches drifts in meaning that you otherwise wouldn’t catch.
It’s sometimes slightly more typing, but I use it everywhere now.
Continue reading “C99 initializers”
In my previous entry, I discussed when
id will be promoted to
instancetype. But now that I’ve explained this, I’d like to explain why you should understand this but not rely on it. Instead, you should use
Let me start with this bold statement, then I’ll back up and explain it: Use
instancetype whenever it’s appropriate, which is whenever a class returns an instance of that same class.
Continue reading “Why you should use instancetype instead of id”
instancetype is a special type that can be returned from an Objective-C method. It specifies that the return is an object of the same type as the receiving class. In some cases, the compiler promotes an
id return to an instancetype: For instance, despite the definition of
[[NSString alloc] init], the compiler knows that it returns an
Continue reading “When is id promoted to instancetype?”
Properties were new in Objective-C 2.0, introduced in 2006. While pretty uncontroversial, along with them came dot syntax. Dot syntax is much more controversial.
In this article, I’ll discuss the advantages of
@property which make it worth using, and discuss “dot syntax.”
Continue reading “A primer on @property and dot syntax”