I have profiled it, most controls run at .5% or less CPU time on an iPhone and have 0 allocations after startup.
When optimizing a game, you probably always have bigger fish to fry than getting rid of foreach loops in your code. Most of the time, the improved readability is worth the minor performance hit from the enumarator's allocation, that may be a personal preference for some, though.
In any case, I did get rid of most per-frame foreach loops in the package. Looks like I missed 2 in VCTouchController, but all the other foreach loops in the package only run during initialization, and then not again. So feel free to change the ones in VCTouchController, but you may not notice a performance difference.
Thanks for catching those though, I'll modify them myself in the next update.