“Although OS X is relatively new, it is built on top of technology that has been under development since Steve Jobs founded NeXT in the mid ’80s. Erik Buck, author of Cocoa Design Patterns, has been working with this platform for over two decades. His perspective on the development of Cocoa, from its beginnings in NeXTSTEP and its evolution through the OpenStep specification, provide some interesting insights.”
Eric M. Buck is an old school NeXT developer and glad to see getting published. Eric and Donald Yacktman go way back.
Buck’s discussion of coupling — interdependencies between classes — is pure gold.
This, to me, is Objective-C’s greatest selling point: the whole point of objects is that they are black-boxes that behave according to a protocol. Since dispatch is built-in, you also get reflection virtually for free.
Typing, OTOH, is a poor substitute for a protocol. Achieving the same degree of genericity and reflection in C++ requires boost::any{_*} or class factories ..
The second greatest selling point is that the syntax to effect this messaging paradigm is so elegant; I agree with Buck about the “.” accessors …
I’ve looked into creating an iPhone app (I have a classic Palm app I’d like to port), but the price of admission is too much for me. In order to do iPhone development I need an Intel Mac, which is going to cost me about $1000. Darn!
Not if you mostly write OpenGL programs. If you need to write GUI apps, you can install Mac OS X in a virtual machine.
Plan on not surpassing your investment to do sell an iPhone app? You have low business expectations and a poor business sense if you don’t write down that investment.
I’m not a business, this is just a hobby app I created on Palm (note-taking program, won’t promote myself here by giving the name or URL). I never made any money on it, mostly broke even. I would just like to learn iPhone development, but there doesn’t seem to be a cheap entry point, unlike in the Windows or Linux world. I am a professional developer during the day, but at night it’s mostly for fun.
You can get a mac mini. You should be able to develop for iPhone no problem. If your investment works out, you should be able to upgrade in no time!
OK, sounds good. Now the last hurdle:
“Hey, honey, I need to buy another computer…”
Find some habit that she spends on yearly that costs more than the mini and guilt her into it.
You dog!
It used to work for me when I was married. Think back to all those glorious birthday presents your better half bought for colleagues you’ve never met or associate with, while on your dime.
Guilt can be a wonderful tool.
LOL! I think this says it all:
“It used to work for me when I was married.”
Maybe I should try it.
Maybe that’s not such a good idea. Did you notice the past tense?
Not anymore you can buy a 200$ hackintosh and run linux on it instead of hackintosh. Install EtoileOS and GNUStep and you can create nice OpenStep apps (I do not know if they are suitable for iPhone). There is also JIGS if you are hardcore Java developer.
Not even close.
GNUstep and EtoileOS are no where near ready to make one want to develop for it and OS X.
I’m sorry but the Smalltalk focus on EtoileOS is a waste of effort when it should first sync up Foundation and AppKit on par with at least 10.5.
This is so true.
After developing in at least 5 GUI toolkits on various platforms in C++, I found Qt to be far and away the best choice for developing UI. The other toolkits required a lot more work to achieve simple things and lacked the runtime dynamism required for modern, adaptable user interfaces. Part of this was due to the toolkit design, most of it was due to the static nature of C and C++. Qt leverages its meta-object compiler to achieve useful constructs like runtime dispatch and reflection/introspecition.
When I started developing in Cocoa for Macs, I had that “a ha!” moment where I could see where a lot of the clever Qt constructs had been inspired. Some people deride Qt for it’s preprocessor for reasons of language purity rather than pragmatic reasons. In my opinion, it’s what makes it truly dynamic and suited for UI development.
Roughly equivalent concepts between Qt and Cocoa:
target/action – signals and slots.
delegate messages – signals and slots.
messages to “id” – Use of CONNECT() macro and emitting a signal to dispath a message.
Class – QMetaObject
NSObject – QObject
respondsToSelector: and performSelctor: – QMetaObject::invokeMethod()
Edited 2009-06-12 20:16 UTC