When Objective-C was chosen to be the primary development language for Nextstep, no doubt its reflective features and dynamic late-bound messaging system were cited as significant advantages. Although the language’s quirky syntax is a turn-off for some, its uneasy marriage between a Smalltalk-inspired object model and the raw low-level power of C is what gives the language its own unique strengths. That Objective-C heritage, carried through as Nextstep, became Mac OS X, and more recently spawned the iPhone OS.
How ironic that this powerful dynamic language also helped to thwart Apple’s efforts to lock down the iPhone.
Dynamic languages with reflection data compiled into their binaries are unusually vulnerable to reverse-engineering. All that metadata, so instrumental to runtime binding and reflective analysis, is also visible to anyone who can decipher your compiled binary format. So when the iPhone Dev Team Get Quality Support with iPhone Hacking set themselves to the task of creating an iPhone SDK, Objective-C’s reflective metadata made the job a whole lot easier.
The first part of this chapter will show how far you can go with Unix scripting: using command-line tools to build solutions and wrapping them in push-button applications. The next section will show you how to take advantage of the iPhone APIs—both their developer-friendly features and their hacker-friendly internals. We’ll explore some of the development environments that you can use, and ...