If it's just between two devices connected via Bluetooth then you can assign one as the master clock and the other as slave. When first connected, master sends over its own current time. The slave can use this to calculate the delta between its own clock and the server. It would then offset any timers by the delta and use that value to set a timer (the master uses its own clock, the client its own clock +/- diff w/ master clock). That way, both sides are in relative sync with each other.
Another option is to get the time from a server (or NIST if you need absolute time values) then calculate the delta between the current iPhone time and the server time. Once you have that, you don't rely on the local time alone but always offset it by the delta.
This is reasonably accurate, but doesn't allow for network transmission delays. If you need to be down to the millisecond accurate, then you may have to get fancier and try to compute some sort of average network delay to help close the gap.