setValue forkey 和 setObject forkey区别简述

setValue forKey :

1、方法是KVC(键-值编码),方法是在NSObject对象中创建的,也就是说所有的oc对象都有这个方法,所以可以 用于任何类

 例子:

 People *p1 = [[People alloc] init];

 [p1 setValue:@"mkj" forKey:@"name"];

 当对象有name属性的时候就是通过KVC来赋值

2、value可以是nil,如果为nil,则自动调用removeObject forkey方法

3、key必须为string类型的

4、取值的时候valueforkey的key如果包含@符号,则取值时会自动把@去掉,程序crash

如下图

setObject forKey:

1、方法是NSMutabledictionary特有的;

2、value不可以为nil,如果为nil,则程序崩溃在此;但value可以为[NSNull null],[NSNull null]为一个空对象,并不是nil;

3、Key的对象是一个id类型,并不是NSString,只不过我们经常使用NSString而已。

4、取值的时候objectforkey的key如果包含@符号,无影响,可以正常取出该值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 源码加翻译 #import <Foundation/NSArray.h> #import <Foundation/...
    CAICAI0阅读 1,242评论 0 50
  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    暮年古稀ZC阅读 2,295评论 2 9
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    朽木自雕也阅读 1,709评论 6 1
  • KVC(Key-valuecoding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iOS...
    榕樹頭阅读 773评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,687评论 1 32

友情链接更多精彩内容