Sounds like a standard continuous integration setup
It seems that you would like to create a continuous integration environment so that developers can work independently of each other, but merge their work on a regular basis (every couple of hours) and have the final outcome pushed out to the iOS device that acts as the current release standard.
Setting up a version control system
First set up a version control system. Ask your developers which they'd prefer but the hot candidates will be Subversion, Mercurial or Git. The last two offer distributed version control so your developers can work anywhere (even when offline from the main version control server). The first (SVN) requires that a version control server is available for checkins, normally the case when you're in the office. Current versions of Xcode have native support for Subversion, but there is also the Versions client and Git Tower for git.
There is no shortage of blogs regarding setting up any of the above so just choose and get started. Personally, Mercurial is a breeze but your mileage may vary.
Setting up Hudson
Hudson is a very straightforward continuous integration build server. (Jenkins is the direct successor project to Hudson and you may want to apply this approach using Jenkins instead).
Set up Hudson for iOS builds and give it a build target something like this
xcodebuild -project Myproj.xcodeproj -target MyProj -configuration Debug
Configure Hudson/Jenkins to build on every change to the version control system.
The overall process then becomes
- Developer A writes some code, tests it locally and checks it in
- Developer B simultaneously writes some code and checks it in
- Source control merges changes against the latest version
- Hudson checks out the current latest version and attempts a build
- If the build fails, all developers get an email stating what's caused the failure
- Developers work to fix the integration issue
- Rinse and repeat until application can be released
- Verify that the application works on the target iOS devices, push back as a bug if it fails