I think know why this is happening.
The sprite initialization happens in Awake() - this is where all the buffers are allocated.
If your function is called from Awake, it may get called before the sprite is actually initialized, and thus setting color will be writing into null buffers.
The order of Awake functions being called is underined in Unity. It might do it one way on PC and another on iOS.
Things to try -
You can try the script execution order in Unity and put tk2dSprite before your script, hopefully this'll fix it.
Alternatively, try switching where redrawTank gets called to Start() - there should be no difference in functionality, but it should get called AFTER the sprites are awake.
Hope that help!