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

posted @ 2017-07-31 19:48  Ficow  阅读(827)  评论(0编辑  收藏  举报