OC三个常用基础类
头语:
新手一枚,在学习过程中,整理自己的笔记,与各位新手大大一起分享,一起进步(PS:其实是怕自己会忘记,又苦于没有钱买笔记本,哈哈),如有错误,望大家提出,我一定最快修改,这仅仅是小生的自我理解,并不想误人子弟,不喜勿喷.
一.首先,整理一下在OC基础中会接触到的类:
NSString,NSMutableString
NSArray,NSMutableArray
NSDictionary,NSMutableDictionary 以上3组类都是经常会用到的,使用频率非常高,然后就是自定义类等等
还有一些比如NSData,NSDate,NSFileHandle这些类,用的一般不是很多
1.NSString和NSMutableString
1.1NSString:
//1)最基本的方式
NSString *str = @"abc"; //常量区
//2) 类方法创建字符串
NSString *str2 = [NSString stringWithFormat:@"xxx"]; //堆区
//3)使用对象方法,来创建字符串
NSString *str3 = [[NSString alloc]initWithString:@"abc"];//常量区
//4) 把字符串写入到到文件中
NSString *str4 = @"每当我错过一个女孩,我就向山上放一块砖,于是这个世界就有了长城!";
1.2NSMutableString的用法同理:
//可变字符串的操作:
//+(instancestype)string{ return [[[NSMutableString alloc] init] autorelease];}
NSMutableString *str = [NSMutableString string];
// 1)添加内容到字符串中
// i, appendString
[str appendStbaring:@"hello"];
// ii, 格式化的插入
int a = 10;
[str appendFormat:@" a = %d",a];
// iii.在指定位置处插入字符串
[str insertString:@"abc" atIndex:2];
// 2)从字符串中删除内容
// 删除指定范围的 字符串
//heabcllo a = 10
[str deleteCharactersInRange:NSMakeRange(2, 3)];
// 3)替换字符串中的内容
//hello a = 10
//hesss a = 10
//当给定的内容大于 我们指定的范围的时候 ,这个时候,以给定的内容为准
[str replaceCharactersInRange:NSMakeRange(2, 3) withString:@"sssxxxx"];
// 4)查找子字符串 ()
NSRange r1 = [str rangeOfString:@"ss"];
NSLog(@"%@",NSStringFromRange(r1));
NSLog(@"str : %@",str); //str:hesssxxxx a = 10
// 重要:
// 1)NSMutableString 容易犯的错误
// NSMutableString NSString
NSMutableString *str2 = @"abc";
// 运行的时候,str2 ----> NSString
//编译的时候不会报错,因为str2 是NSMutableString 类型的
//运行时,会报错
// str2 变成了NSString 类型的了
// NSString 是不可变的,没有appendString 方法
[str2 appendString:@"xxxx"];
// 2)NSMutableString 有一个string的属性,它可以吧字符串内容给覆盖掉
str.string = @"abc"; //str = abc
NSLog(@"str : %@",str);
NSString 不可变:指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化
NSMutableString 可变:指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改
两者的区别:NSString是不可变的, 里面的文字内容是不能进行修改的,NSMutableString是可变的, 里面的文字内容可以随时更改
2.NSArray和NSMutableArray
2.1与C数组比较
NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代
C语言中的数组
int array[4] = {10, 89, 27, 76};
只能存放一种类型的数据.(类型必须一致)
不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)
// 1) 使用类方法创建
NSArray *arr = [NSArray array]; //空数组 没有意义
// 2) 创建数组,有一个元素 (元素的类型必须是一个OC的对象)
NSArray *arr1 = [NSArray arrayWithObject:@"abc"];
// 3) 创建数组,有多个元素
NSArray *arr2 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
// 4) 可以用一个已经存在的数组,创建一个新的数组
NSArray *arr3 = [NSArray arrayWithArray:arr2];
// 5) 快速创建
NSArray *arr4 = @[@"one",@"two",@"three",@"1",@1];
// 使用对象方法创建数组
// nil用来标志数组已经结束了
// 怎么样才能存储一个null
// [NSNull null]; //打印时是 "<null>"
NSArray *arr5 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",[NSNull null],@"5",
nil];
// 查看数组的内容
// 当我