I'd suggest taking a look at this app to start: http://itunes.apple.com/us/app/ardumote/id449100779?mt=8. It will let you configure widgets on the iPhone to send UDP packets to the Arduino, and receive UDP packets from the Arduino for things like displaying sensor readings.
Then you will just need a WiFly module and an XBee shield for it. Connect the WiFly module to the local WiFi network, connect the iPhone to it also, and then they can send packets to each other.
Another option is to use Adhoc mode where the WiFly and the iPhone connect to each other instead of an access point.
This library for the WiFly may suit your needs (I wrote it): GitHub - harlequin-tech/WiFlyHQ: WiFly RN-XV Arduino Library.