黑马程序员——Objective-C程序设计(第4版)学习笔记之15-数字、字符串和集合——黑马 IOS 技术博客

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

这章开始讲必经常用的基本对象:数字、字符串和集合。

#import <Foundation/Foundation.h>

实际上,因为Foundation.h文件导入Foundation所有的头文件,所以不必担心是否导入正确的头文件。但使用这条语句会明显增加程序的编译时间。所以,一般import用到的头文件。不要用太大的import。


数字对象:

如果需要存储基本数据类型(包括char数据类型),可以使用NSNumber类,它会依据这些数据的类型创建对象。

对于每种基本数据类型,类方法都能为它创建一个NSNumber对象,并设置为指定的值。这些方法以numberWith开头,紧接着数据的类型,如:numberWithLong:


方法numberWithInt:和numberWithInteger:使用有些差别,遵循以下一些规则:

1)如果使用numberWithInt:方法创建一个整型数,需要使用intValue获取它的值,使用%i作为格式化字符串显示它的值。

2)如果使用numberWithInteger:方法创建一个整型数,需要使用integerValue获取它的值,也可以转换成long显示或使用stringWithFormat:将它格式化为字符串。使用%li作为格式化字符串。


字符串对象:

Foundation框架支持一个名为NSSTring的类,用于处理字符串对象。然而C样式的字符串由char字符组成,NSString对象由unichar字符组成。

要使用Objective-C语言创建一个常量字符串对象,需要在字符串开头放置一个@字符。

创建字符串对象时,会创建一个内容不可更改的对象,这称为不可变对象。

需要制定一个范围确定子字符串,使用特殊的数据类型NSRange类创建对象。实际上,它是结构的typedef定义,包含location和length两个成员。

如果没有找到这个字符串,则返回范围的location成员被设置为NSNotFound。


可变字符串:

NSMutableString类可以用来创建可以更改字符的字符串对象。

注意,如果替换字符串中还包括搜索字符串(如:使用字符串“ax”替换字符串“a”),那么将会陷入无限循环。其实,这个是和它的实现原理有关系,一般这种替换使用的方法使用了递归调用。


数组对象:

Foundation数组是有序的对象集合。不可变数组:NSArray,可变数组:NSMutableArray。

注意,需要标记参数数组的结束,将这个数组的最后一个值定为nil,它实际上并不会存储在数组中。

数组中的元素是由它们的索引数确定的。与NSString对象类似,索引从0开始。

可以通过NSLog格式化字符串%@显示整个数组。


这里作者举了一个地址薄的例子演示了数组的用法,挺好的,建议大家手敲进去感受一把。

个人觉得程序员,每天都要敲点代码,练练手,加强一下手感和记忆。毕竟熟能生巧嘛。看那么多书也没有太多用。实际敲进去,运行一把。什么感觉都有了。毕竟,运行没问题,才是成功。


NSValue:

数组这样的Foundation集合只能存储对象,不能存储像int这样的基本数据类型。

NSValue类正好可以将结构转化为对象,并且把它存储在集合中。这种将结构化转为对象的方式,简称为包装(wrapping),逆向的处理是从对象中解出基本类型,简称展开(unwrapping)。


词典对象:

词典(dictionary)是由键-对象对组成的数据集合。字典中的键必须是单值的,通常是字符串,但也可以是其它对象类型。和键关联的值可以是任何对象类型,但不能是nil。

词典可以使固定的,也可以是可变的。可变词典中的记录可以动态添加和删除。

和数组对象不一样,词典对象是无序的。

这个词典让我想到java里面的两个东西,一个是HashMap,也是key-value的格式。又想到另外一个android的基础组件之一,sharedpreference。哈哈。


集合对象:

set是一组单值对象集合,它可以是变的或不可以变的。操作包括:搜索、添加、删除集合中的成员(仅用于可变集合),比较两个集合,计算两个集合的交集和并集等。

这些集合对象包括:NSSet、NSMutableSet、NSIndexSet和NSCountedSet等。

注意,NSIndexSet没有可变版本。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值