Everyone's iPhone 4S will heatup while running certain applications. Four years of Apple allowing very poor coding practices is going to bite them in the rear now. Here is the basic scenario that is occurring.
Applications have two very basic types of programming loops. Using "pseudo code":
This module is what 95% of all non-gaming applications use. The remaining 5% use the gaming loop below.
Code:
while not done
display screen
wait for user input
get user input
process result
loop back to while
This module is what roughly 85% of all game use. The other 15% use the above code.
Code:
while not done
get user input
process result
display screen
loop back to while
Now the first code block uses very little battery. Because it is spending almost its entire time waiting for us very slow users to interact with the screen. On the other hand the gaming loop is running full tilt regardless of what the user is doing. The reason for that is simple. You have to move the graphic elements on the screen constantly.
So about now you might be asking "Well if that is how it has been done on iOS since day one, why is this now bad"? Because before now, the CPU and GPU have always been the throttle of how much battery was being drained. Mainly because the GPU could only output so many "Frames Per Second". But with the iPhone 4s being seven times faster than than anything before it, now the same code can run more times. And every time that loop runs it costs you battery life.
So the coders now have to look at how many FPS is acceptable to show nice smooth animation vs how much battery life they want to drain. The new code block will look like this.
Code:
while not done
get user input
process result
wait for x time to pass before displaying so we get exactly 30 FPS.
display screen
loop back to while
That's it. A very simple change that now has to be implemented in a lot of applications that are currently in use by millions of people.