I use Anki (http://ankisrs.net/).
The app store version is $25, but the desktop version is free. There's also a free web app that can be used from handheld devices with internet access and a free Android app. You can sync across multiple devices via the web app.