zoukankan      html  css  js  c++  java
  • ios 清空全部key chain以及userDefaults相关

    清空相关信息,再构造唯一id等可做一键新机

    清空全部key chain

    + (void)clearKeyChain {
        NSMutableDictionary *query = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                      (__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes,
                                      (__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit,
                                      nil];
        NSArray *secItemClasses = [NSArray arrayWithObjects:
                                   (__bridge id)kSecClassGenericPassword,
                                   (__bridge id)kSecClassInternetPassword,
                                   (__bridge id)kSecClassCertificate,
                                   (__bridge id)kSecClassKey,
                                   (__bridge id)kSecClassIdentity,
                                   nil];
        for (id secItemClass in secItemClasses) {
            NSLog(@"secItemClass %@",secItemClass);
            [query setObject:secItemClass forKey:(__bridge id)kSecClass];
            
            CFTypeRef result = NULL;
            SecItemCopyMatching((__bridge CFDictionaryRef)query, &result);
            if (result != NULL) CFRelease(result);
    
            NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass};
            SecItemDelete((__bridge CFDictionaryRef)spec);
        }
    }
    

      清空 userDefaults 用户相关

    + (void)clearUserDefaults {
        NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
        [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
        [[NSUserDefaults standardUserDefaults] synchronize];
        
        NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
        path = [path stringByAppendingPathComponent:@"Preferences"];
        NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
        
        for (NSString * filename in fileList) {
            NSString *filepath = [path stringByAppendingPathComponent:filename];
            BOOL isDir = NO;
            [[NSFileManager defaultManager] fileExistsAtPath:filepath isDirectory:(&isDir)];
            if (!isDir && [filename hasSuffix:@".plist"] && (![filename isEqualToString:appDomain])) {
                NSString *suitename = [filename stringByDeletingPathExtension];
                NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:suitename];
                [userDefaults removePersistentDomainForName:suitename];
                [[NSFileManager defaultManager] removeItemAtPath:filepath error:nil];
            }
        }
    }
    本文章仅供学习参考,如有版权侵犯,请联系作者修改,转载请注明出处!
  • 相关阅读:
    STL 清除模板容器 clear.h
    建立ORACLE10G DATA GUARD--->Physical Standby
    WWDC 2014 Session 205/217 Extension 注意事项
    Android 布局管理器
    软件测试的基本方法(五岁以下儿童)单元测试
    HDU 4896 Minimal Spanning Tree(矩阵高速功率)
    泛泰A860(高通公司8064 cpu 1080p) 拂4.4中国民营recovery TWRP2.7.1.2文本(通过刷第三版)
    Android L SDK -- 一些有趣的新功能
    Jquery在线咨询地址
    项目开发录制两个
  • 原文地址:https://www.cnblogs.com/HugJun/p/15774276.html
Copyright © 2011-2022 走看看