During the free fall the iphone is supposed to send acceleration values as 0 on all the three axis. So how to detect the distance covered by the iphone?
One solution that would take into account the issue of wind resistance is you could use the difference between acceleration from gravity and your actual norm of acceleration you're reading,
d2x / dt2 = g - |a|
Where g = 9.8 and |a| = sqrt(a12 + a22 + a32) where an are the readings from the accellerometer on each axis.
Then solve the differential equation numerically, with something like Euler's Method.
You could even be clever and lookup local value of g using GPS.
distance = 0.5 * gravityAcceleration * timeOfFall2
In the simplest form.
We can safely omit air friction and wind, given iPhone's form factor and weight as well as the distances which hardware will still be useful when falling from. ;)
However, if you're going with the phone into a free fall before opening a parachute, there are too many factors to count in to reliably calculate the distance, based on accelerometer itself. It is probably not suited for such applications anyway, as the readings are very unstable and its main purpose is to determine device's orientation or detect a potential free fall (in case of notebooks where similar accelerometer chips are used).
The most simple and naive implementation is to sample the accelerometerdata and use the following formula.
v+=a*dt;
d+=v*dt;
But this is can give drift over time, read this for explanation why and a better solution: http://gafferongames.com/game-physics/integration-basics/
Also keep in mind that the phone is VERY likely to be tumbling in any sort of falling scenario. As the phone's profile changes, the drag will change, and the accelerometer will NOT be reading zero.