I want to get the iPhone network speed so that I can give the user information when the speed is too slow.
Remember that the iPhone is a wireless device and is probably on the move. Network speed can (and will) vary greatly from moment to moment, so measure your average throughput for at least 20 seconds or so ... basically, how the βbarsβ work. If they were updated in real time, they would jump everywhere.
Net speed will radically change depending on the huge number of variables between the iPhone and any server you are trying to connect to.
You are much better off adapting your behavior on the fly based on any data stream that you like at any given time.
It looks like Netflix automatically adjusts video quality, as the quality of the network connection changes over time.
In the ZDS_Shared cache, they put each load operation in NSOperation and then compute based on size and time. See calculateBandwidthForDelegate:. Then they set one of the three possible network states and load the throttling accordingly.