@applicationDidFinishLaunching:@ should still work, though yes since the advent of multitasking under iOS 4 (which appeared not long after the book went to press) new applications should use @application:didFinishLaunchingWithOptions:@. I’ll make sure this is updated for the next printing.
I’m not sure what you mean when you say “the iPhone simulator does not reset when you reload”… Each time you Build & Run from Xcode, you’ll be asked if you want to terminate the application in the simulator (from iOS 4, pressing the Home button no longer exits an app) before relaunching it. This should cause the new copy of the app to be installed in the simulator, replacing the old one, so that each time you add code, the new functionality appears on the next Build & Run.
I have run into issues where more than one copy of an app can appear in the Simulator; the old one isn’t deleted and replaced, and the whole system gets confused, running the old one, even though it thinks it’s running the new one, so you don’t see any of the changes you just implemented in code (I speak from bitter experience trying to work out why all the lines of code I just wrote didn’t change anything). If this happens in the future, you don’t need to “Reset Content and Settings…” for all the apps you have in the Simulator, you can use the iOS device style app deletion: press and hold the app’s icon in the Simulator home screen until it wiggles, then press the x to delete it.