Impedir a restauração do estado na atualização da versão

Você sempre deseja verificar qual versão do seu aplicativo salvou anteriormente o estado usando o salvamento e restauração de estado do iOS6, já que telas / dados / etc podem mudar de versão para versão.

Em vez de ter lógica condicional nos métodos de decodificação em seu controlador de visualização, apenas adicione isso ao seu AppDelegate para evitar a restauração de todos juntos quando o usuário acabou de atualizar o aplicativo. Este código usa o número da versão no pacote do seu aplicativo.

#define kStateSavingPreviousVersion @"PreviousAppVersionNumber"
#define kVersionNumber @"CFBundleShortVersionString"

-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
//we don't want to restore if the state is from a previous app
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:kVersionNumber];
NSString *previousAppVersion = [coder decodeObjectForKey:kStateSavingPreviousVersion];
return [previousAppVersion isEqualToString:appVersion];
}

-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:kVersionNumber];
[coder encodeObject:appVersion forKey:kStateSavingPreviousVersion];

return YES;
}