[[UIDevice currentDevice] identifierForVendor]
Is the better choice. You offer one single identifier for a device, even if the settings are reset.
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.UIDevice#identifierForVendor
For more explanation, heres a good summary: iOS6 UDID - What advantages does identifierForVendor have over identifierForAdvertising?
So, in case you do not use the advertisingIdentifier at all for advertising, you shouldn't make use of this => unfortunately, your question regarding the 3 approaches is obsolete.