1 前言
IOS中存储数据就要涉及到数据类型,今天我们来学习一下IOS中的数据类型。
2 详述
2.1 基本数据类型
在对象的实例变量中使用原始类型没有任何坏处,我们不用担心保留和释放。不需要只能加额外的对象开销。
NSInteger看起来很像类名,其实只是类型定义。类似的还有NSRange用来定义一组数据的范围和NSTimeInterval用浮点值表示一段时间。
永远是类型定义实例变量和对象实例变量有所不同,由于不涉及释放和拷贝,因此他们用@property的assign属性进行定义。例如:
@property (nonatomic,assign) NSUInteger exclamationCount;
@property (nonatomic,copy)NSString *originalString;
通过设计出数据类型复制可以简化代码:
exclamationCount = 8;
而且在 -dealloc方法中,也不需要释放exclamationCount。使用基础数据类型使代码更加简单,又不会牺牲任何功能。
2.2 对象化(Objectified)
值对象的好处:
(1)可以在集合中存储一组对象。
(2)对象类提供了很多功能方法来对这些值进行操作,在代码实现中会带来更多的的灵活性,同事节省很多的时间。
2.3 值对象举例
2.3.1 NSString
NSString是用于处理字符串的对象,其功能:
(1)Unicode支持及字符串编码转换。
(2)读取文件的文本及其编码
(3)分割和合并字符串。
(4)用来转义作为URL的字符串。
(5)字符串查找和获取Unicode字符数。
(6)将字符串转化成数字。
(7)大小写转换。
(8)字符格式化和本地化。
(10)根据用户的当前语言设置,使用很多项进行字符串比较,包括忽略变音符号和按数值排序。
2.3.2 NSNumber
再做数值转换时候会用到,如果用一个浮点数创建了一个值对象,然后向该对象获取一个无符号字符值(-unsignedCharValue),就会在原始对象内部进行一个没有任何损失的转换。
2.3.3 NSDecimalNumber
如果进行货币计算,可以使用该类,具有38位有效数字并且指数范围在-128~127的数字。
2.3.4 NSDate
日期对象,提供了操作时间的基本功能,如:
(1)比较哪个日期更早
(2)两个日期之间间隔的秒数
(3)可以和NSCalendar一起使用,计算涉及时区或闰年问题的两个时间之间间隔的月数和天数。
2.3.5 NSData
作为一个非结构化字节流的对象,提供了管理数据缓冲区的机制,数据对象通常要存储到磁盘上,因此提供了读写方法。
2.3.6 NSNull
表示空值。集合不允许有nil对象,所以当需要一个空的数组,字典,集时候可以使用NSNull。
2.3.7 NSValue
它可以将任何有效的变量类型封装成值对象。
2.4 集合
2.4.1 NSArray
可以指定集合内的顺序,提供了排序和筛选数据的机制。
2.4.2 NSDictionary
用键-值的方式来存放对象,实现了一个关联数组(associative array),可以用键来进行相关索引。
2.4.3 NSSet
用来存放那些对顺序没有要求的对象,通常用于数学运算,其中的方法可以测试等式,交集和子集。
还可以在NSArray中嵌套NSDictionary,或者在NSDictionary中嵌套NSArray。
3 结语
以上是所有内容,希望对大家有所帮助。