I've caught a few mistakes in GKTapper. Read on to see how the sample performs invalid caching of achievements and to see how it shows incorrect string as leaderboard description in one place.
If you want to get started with Objective-C, and you have some background in C/C++, read this neat post I randomly stumbled upon: "Why Objective-C is cool". It's a pretty nice description and hopefully removes a lot of WTFs from a newbie.
Then, read CocoaLab's free e-book "Become an Xcoder".
Finally, this is the longest route, but the one I went with: watch all 18 hours + extras of CS193P iPhone Application Development 2009 (and then go watch some of the 2010 lessons, too). It takes a long time to watch, but it's worth it.
In Xcode 3.2.4, it's trivial to create same project for iOS and Mac OS X. Just add a new target into your existing project; if your project is for OS X, then create a new Cocoa Touch Application target. If your project is for iPhone, obviously, craete a new Cocoa Application target. Then do a Get Info on your new target, and choose the appropriate Base SDK. For simplicity, let's presume you're adding an OS X target to an iPhone project.
However, after doing this, you'll quite probably find that despite the choice of Base SDK in your target (you used Get Info on it, didn't you?), Xcode has locked the target SDK onto whatever your project originally used. That is, now you'll find it locked onto iPhone, despite switching to the OS X target using the Overview dropdown (in the top left of your Xcode project).
So how do you actually switched the now-locked SDK? Quite simple. Hold the option key while clicking in the Overview box. Instead of only two-entries device list (if you have an iPhone target selected), and then Active Configuration, Active Target, Active Executable and Active Architecture, by holding the option key while clicking on Overview you'll also find the Active SDKs list. By switching it to the appropriate OS, you'll be able to compile the application.
Of course, now comes the hard part: actually porting the code to the new platform.
Are we running on an Apple platform?
Prerequisite for other tests
// let Apple define
// various TARGET_OS_
// not on Apple platform
#define TARGET_OS_MAC 0
#define TARGET_OS_IPHONE 0
Are we running on Mac OS X?
#if TARGET_OS_MAC && !TARGET_OS_IPHONE
Are we running on an iOS device?
// updated on Oct13 2010, previous method was flawed. sorry everyone!
Developing for iPhone with some C++ code? Suddenly getting this error after installing a beta SDK?
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h:65:0 Bits/c++config.h: No such file or directory in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h
Note the bolded folder. Change into it and make a symlink from arm-apple-darwin9 to arm-apple-darwin10. Please note that Apple has fixed this already at one upgrade of beta SDK (I had this error before too, but I still didn't get 4.0 beta 2 so I didn't check) so it's reasonable to assume they will do this again.
ln -s arm-apple-darwin9 arm-apple-darwin10
PS I don't think posting this violates any NDA. Especially since origin for this solution is also public.
So, ordinarily, iPhone is supposed to appear in your iPhoto list, as pictured. But what if that doesn't happen, and you've tried everything: erasing iPhoto settings, playing with iTunes preferences… everything, in fact, except erasing your iPhone's valuable data? How to sync photos into iPhoto again; that is, how to get your iPhone to introduce itself as a camera once again?
As strange as it may sound, this is caused by you downloading picture attachments or choosing Save image in mobile Safari. So just go and mail yourself every photo from Camera Roll that was not created with iPhone's own Camera, and then delete them.
That's right, just go right ahead and delete all the photos you downloaded from your iPhone's Camera Roll. This'll restore your access. This has worked on my iPhone 2G with OS 3.1.2.
Well, if it doesn't help you, you could also try something else from this thread on MacRumors forums.