I recently had a very frustrating time where compiling and running an iOS application with a tethered iPhone works just fine in Xcode, however the moment I switch the target to any iOS simulator I would get linker errors:
... missing required architecture i386 in file
for all internal SDK API's. Turns out the fix was to go to Build Settings in Xcode on the target you are building, search for Framework Search Paths and delete the content of that field. Mine used to contain:
$(inherited) $(SRCROOT) $(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/
Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks
Once done, it built and ran just fine.