Always withdraw locally if you have a no-fee card. If you're in the US, get Schwab - they'll reimburse any fees for you.
It's not a bad idea to have local currency once you arrive, but the rate is always better when you withdraw locally.
In many places you don't even need local currency anymore - most places take credit cards.
In the last 10 years, I've only had one time I could not withdraw currency - that was in Guinea-Bissau. All the ATMs were down in the entire capital. I had brought some € and was able to exchange those locally, and pay for my hotel using a card.