zoukankan      html  css  js  c++  java
  • 登录时本地保存账号密码及关闭ARC的方法

    对于登录时保存用户名和密码,苹果官方使用的是KeychainItemWrapper,但使用时有些不便,如在引入KeychainItemWrapper的类中都要关闭arc,不能自定义key,必须使用该类提供的kSecValueData、kSecAttrAccount等。
    所以推荐使用第三方类库——SSkeychain,地址在

    https://github.com/samsoffes/sskeychain/

    它的优点如下:
    ①无需手动关闭arc,它会自动判断并运行在arc和非arc环境中
    ②能存储多组账号和密码
    使用方法如下:
    ①项目中引入Security.framework
    ②将SSKeychain.h和SSKeychain.m导入项目

    1 //储存账号密码
    2 -(void)storeAccountAndPwd{
    3     NSString *accountNum = self.accountField.text;
    4     NSString *pwdNum = self.pwdField.text;
    5     NSString *serviceName = @"cn.zmfc";
    6     [SSKeychain setPassword:pwdNum forService:serviceName account:accountNum];
    7 }
    8 //service保存的是服务的类型,就是用户名和密码是为哪个应用保存的一个标志。

    结果如下:

    1 //删除某组特定的账号跟密码
    2 NSString *serviceName = @"cn.zmfc";
    3 NSArray *accountTemp = [[SSKeychain accountsForService:serviceName] lastObject];
    4 NSString *accountNum = [accountTemp valueForKey:@"acct"];
    5 NSString *pwdNum = [SSKeychain passwordForService:serviceName account:accountNum];
    6 [SSKeychain deletePasswordForService:serviceName account:accountNum];
    //若要删除所有的账号和密码,则用
    NSArray *accounts = [SSKeychain accountsForService:kSSToolkitMyPswdServiceName];
    for (NSDictionary *dictionary in accounts) {
        NSString *account = [dictionary objectForKey:@"acct"];
        [SSKeychain deletePasswordForService:kSSToolkitMyPswdServiceName account:account];
    }

    更详细的介绍见这里
    http://hi.baidu.com/bupt_zhuo/item/fac2422c1861b14f479962f2
    http://blog.csdn.net/fangzhangsc2006/article/details/8716131

    引申

    有时候导入一些第三方文件需要关闭arc,否则报错。这里给出如何部分或整体关闭arc方法。
    ①整体关闭arc,即整个项目都关闭
    Build settings -> Apple LLVM complier 6.0 - Language - objective-C ——> Automatic Reference Counting设置为NO,即可

    ②部分关闭,即某个类不需要arc,那么只需在该类中关闭arc即可,不影响整体项目。
    Build Phrases ——> Compile Sourses,找到不想加arc的.M 文件,在后面加上 -fno-objc-arc

  • 相关阅读:
    python中如何将两个list合并成一个list,不用for语句
    python print的用法
    Pandas Timestamp 和 python 中 datetime 的互相转换
    python eval, exec. compile
    python 用 __all__ 暴露接口
    python functiontools 模块
    Python 修饰符, 装饰符
    Python 字典(Dictionary) update()方法
    Python :random 随机数生成
    Pandas dataframe 标记删除重复记录
  • 原文地址:https://www.cnblogs.com/Apologize/p/4318501.html
Copyright © 2011-2022 走看看