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?
Ignoring air drag:
float t; // time since drop float distance = 9.81f * 0.5f * t * t;
For greater distance (drop from airplane) you also could use the location services. CLLocation contains an altitude.