If the answer is outdated or no longer relevant either delete it or update it so it is relevant.
If the question is no longer relevant or outdated either edit it to reflect that it was relevant or change it to be relevant or vote to close it as no longer relevant.
Some of this depends on the reason for the change. For example, what's relevant to VB.NET 3.5 now is not necessarily what was relevant to VB.NET 2.0/1.1 or, God forbid, VB6. Those answers however may still be relevant to people who are still developing for those systems (and yes they have my condolences) so rather than delete it or update the question to whatever is current, it might be most appropriate to make sure the question and/or answer reflects that this applied to an old version.
You could say "For version X, it works like this but for version Y this is no longer relevant because of new feature Z".
In the case of iPhone OS, it's probably best to delete things that applied only to iPhone OS 1.x/2.x because they don't stick around in quite the same way that legacy operating systems and frameworks do. You are almost required to upgrade your iPhone OS and you're somewhat foolish if you don't (barring teething problems).