With iHeartRadio, you won't be able to choose your song directly (the way you can with a subscription to Slacker or Spotify), but you can certainly help the service get to know your musical preferences. First, with the familiar Thumbs-up and Thumbs-down buttons, you can let iHeartRadio know which songs you do and don't like. This means that the more songs you rate, the better it gets at playing only what you want to hear. Also, there's the Discovery Tuner, which you can use to adjust the amount of lesser-known music that gets pushed into your custom station. You can set this tuner to Familiar, Mixed, or Less Familiar, the last of which fills your playlist with a variety of songs that aren't so mainstream.
While you're listening to a song, you can hit the "+" button to pull up options to see lyrics, the artist's bio, or create a new custom station based on that particular song. There are also links to buy some songs directly from Amazon MP3. If you don't like the song you're listening to, you get six skips per station. After you use them all up, you'll have to listen to songs in their entirety or switch over to a new station (which will replenish you with six more skips).
One bonus feature I love is iHeartRadio's Sleep Timer. From the settings menu, you can set the app to stop after anywhere from 15 minutes to 3 hours of playback.
While iHeartRadio is certainly impressive, it isn't perfect. I would love to see the app add some of the DVR-like features that TuneIn Radio Pro offers. I realize that adding these features might come at a price, but still, it would be nice to be able to pause, rewind, and record radio content for later playback.
Overall, iHeartRadio is the best completely free streaming radio app I've seen. It takes some of (but not all) the best features from TuneIn Radio Pro and combines them with Pandora-like functionality. The custom stations are ad-free, programming is top-notch, and the app is easy to use.