什么不能存储在NSDictionary中?

时间:2014-11-12 20:58:28

标签: objective-c nsdictionary

我正在尝试完成在线测验,这就是问题:

以下其中一项无法存储在NSDictionary中。它无法存储,因为它是_____类型:

的UIView 的NSNumber NSInteger的 的UIColor

填写空白。


我似乎无法在网上找到答案。据我所知,他们都有办法存储在NSDictionary,任何想法?

2 个答案:

答案 0 :(得分:5)

NSInteger的!因为它是原始类型

答案 1 :(得分:2)

原始类型,因为它们不是对象。可以添加任何对象。

主要区别在于它们留在内存中的位置,对象存储在堆中,而值类型直接存储在堆栈中...

heap:是用于动态内存分配的内存区域。

stack:是为函数内的自动变量分配的内存部分。使用后进先出(LIFO)方法将数据存储在堆栈中。

关于NSInteger和NSNumber:

NSInteger只不过是一个长整数的同义词,而NSNumber是一个Objective-C类,NSValue的子类是特定的。

What is the difference between primitive data type vs an non primitive data type(apple defined data type)?

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/