zoukankan      html  css  js  c++  java
  • iOS NSUserDefaults [setValue:forKey:] [setObject:forKey:] <Objc> setValue(_,forKey:) set(_,forKey) <Swift 3>

     

     

    前者其实是NSObject都可以调用的KVC方法,后者才是NSUserDefaults的实例方法

    这里参数的类型是nullable id,但是我建议你在传null的时候慎重考虑,否则你的应用就可能面临闪退!

    个人认为,任何高级语言里面使用null作为参数传递的时候,都应该万分小心!

     

     

    前者其实是NSObject都可以调用的KVC方法,后者才是UserDefaults的实例方法

     

     

     

     

    尽管你也可以使用KVC方法来设置UserDefaults里的值,但是我建议你最好不要这样做!

    removes the value if nil is passed as the value UserDefaults的实例方法可以让你任意使用null

    然而如果你用KVC方法来设置UserDefaults的值为null,这时候就会有异常产生!

    我们知道异常在iOS开发中不像Error那么致命,异常产生时会出现一些奇妙的问题,比如CPU占用率飙高。

    如果仅仅是飙高一点点那没啥,如果是持续飙高,那么其他的线程可能会饿死,APP也极有可能闪退!

     

    所以,在使用名称极其相似的API的时候,一定要谨慎!

    传递的参数有可能为null的时候,也要谨慎!

     

     

     

     

     

    顺便搜了一下OCSwift混编的坑,真的蛮多的!

    比如这个KVC的坑


    Ficow原创,转载请注明出处:http://www.cnblogs.com/ficow/p/7265162.html

  • 相关阅读:
    bootstrap模态框
    css 禁止选中文本
    Python Flask Tornado
    JS canvas标签动态绘制图型
    JS 跳转页面
    JS 计算器
    JS
    柱状图中最大的矩形
    在不使用第三个变量的情况下交换两个数的值
    springboot配置静态资源访问的2种方式
  • 原文地址:https://www.cnblogs.com/ficow/p/7265162.html
Copyright © 2011-2022 走看看