黑马程序员——OC语言日志——NSMutableString和NSMutableArray 的介绍及使用
来源:互联网 发布:java中集合map 编辑:程序博客网 时间:2024/05/21 09:03
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、NSMutableString的介绍和使用
1、NSMutableString的基本概念
NSMutableString类继承NSString类,那么NSString提供的方法在NSMutableString中基本都能使用,NSMutableString好比一个字符串链表,它可以任意的动态在字符串中添加字符,删除字符,指定位置插入字符,使用它来操作字符串会更加灵活。
NSMutableString和NSString的区别:
NSString是不可变的,里面的文字内容是不能进行修改的
NSMutableString是可变的,里面的文字内容可以随时更改
NSMutableString能使用NSString的所有方法
2、字符串的可变和不可变
不可变:指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化。
可变:指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改。
看以下代码,可以更好地解释NSMutableString可变和NSString不可变
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //字符串存在于常量区,字符串内容不能变 //指’指向的“jingwang”地址 NSString *str = @"jingwang"; NSLog(@"straddr=%p",str); //指’指向“yuwang”地址 str = @"yuwang"; NSLog(@"straddr=%p",str); //创建<span style="font-family: Arial, Helvetica, sans-serif;">NSMutableString 字符串,</span><span style="font-family: Arial, Helvetica, sans-serif;">存在堆区</span> NSMutableString *str1 = [NSMutableString stringWithFormat:@"suzhe"]; NSLog(@"str1addr=%p",str1); //格式化的添加字符串 [str1 appendString:@"meichangsu"]; NSLog(@"str1为%@",str1); NSLog(@"str1addr=%p",str1); //因此,NSMutableString字符串是可变的 } return 0;}打印:2015-10-25 21:31:56.202 NSMutableString的介绍和使用2[379:303] straddr=0x100001048
2015-10-25 21:31:56.204 NSMutableString的介绍和使用2[379:303] straddr=0x100001088
2015-10-25 21:31:56.205 NSMutableString的介绍和使用2[379:303] str1addr=0x100500e40
2015-10-25 21:31:56.206 NSMutableString的介绍和使用2[379:303] str1为suzhemeichangsu
2015-10-25 21:31:56.206 NSMutableString的介绍和使用2[379:303] str1addr=0x100500e40
由打印结果可以看出,str指针一开始指向的是字符串“jingwang”的地址straddr=0x100001048,后来指向字符串“yuwang”的地址straddr=0x100001088,这两个地址不相等,就是说,这两个字符串是存储在常量区,是不可变的。而str1则使用NSMutableString字符串,修改字符串内容之后,打印地址是相等的,就是说字符串长度和内容是可变的。
3、创建方法和常用方法
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableString *str = [NSMutableString string]; //1)格式化的添加字符串 [str appendFormat:@"http://www.baidu.com/%d",200]; NSLog(@"str=%@",str); //2)删除字符串一部分内容 [str deleteCharactersInRange:NSMakeRange(5, 6)]; NSLog(@"str=%@",str); //3)插入一个字符串 [str insertString:@"xinlang" atIndex:6]; NSLog(@"str=%@",str); //4)替换字符串一部分 [str replaceCharactersInRange:NSMakeRange(5, 6) withString:@"wangyi"]; NSLog(@"str=%@",str); //5)查找一个字符 NSRange range = [str rangeOfString:@"i"]; NSLog(@"%@",NSStringFromRange(range)); //在指定范围内查找字符 NSRange range2 = [str rangeOfString:@"i" options:0 range:NSMakeRange(1, 2) ]; NSLog(@"%@",NSStringFromRange(range2)); } return 0;}打印:
2015-10-25 21:35:48.656 NSMutableString的常用方法[472:303] str=http://www.baidu.com/200
2015-10-25 21:35:48.664 NSMutableString的常用方法[472:303] str=http:baidu.com/200
2015-10-25 21:35:48.666 NSMutableString的常用方法[472:303] str=http:bxinlangaidu.com/200
2015-10-25 21:35:48.668 NSMutableString的常用方法[472:303] str=http:wangyingaidu.com/200
2015-10-25 21:35:48.670 NSMutableString的常用方法[472:303] {10, 1}
2015-10-25 21:35:48.673 NSMutableString的常用方法[472:303] {19, 1}
4、使用NSMutableString的注意事项
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //注意事项 //1)不可以给可辨字符串赋值不可变值 // NSMutableString *str1 = @"feiliu"; // [str1 appendFormat:@"xxx"]; // NSLog(@"str1=%@",str1); //2)使用.string=@“”会将原来字符串内容给覆盖了 NSMutableString *str2 = [NSMutableString stringWithFormat:@"meichangsu"]; str2.string = @""; [str2 appendFormat:@"yyy"]; NSLog(@"str2=%@",str2); //3)开发中绝大多数用到的都是NSString //只是如果需要特殊处理的时候(截取拼接替换),才考虑使用 //NSMutableString } return 0;}二、NSMutableArray 的介绍和使用
1、NSMutableArray介绍
和NSMutableString类似,NSMutableArray是NSArray的子类,NSArray是不可变的,一旦初始化完毕后,它里面的内容就是永远是固定的,不能删除里面的元素,也不能往里面添加元素。NSMutableArray是可变的,随时可以往里面添加、更改、删除元素。
2、NSMutableArray的创建和常见使用方法
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //创建数组 //1)创建数组 NSMutableArray *arry1 = [NSMutableArray array]; //创建数组,并且初“化一 元素 NSMutableArray *arry2 = [NSMutableArray arrayWithObject:@"one"]; //创建数组,并且初“化多 元素 //不正确的写法:这是不可变数组 写法 //NSMutableArray *arry3 = @[@1,@2,@tow]; NSMutableArray *arry3 = [NSMutableArray arrayWithObjects:@"one",@"tow",@"three", nil]; //创建空数组,并指定数 长度 NSMutableArray *arry4 = [NSMutableArray arrayWithCapacity:7]; //2)添加元素 [arry1 addObject:@"WangJing"]; NSLog(@"%@",arry1); //指定位置插入元素 [arry1 insertObject:@"SuchangMei" atIndex:0]; NSLog(@"%@",arry1); //3)删除元素 //根据对象内容删除 [arry1 removeObject:@"WangJing"]; //根据位置删除 [arry1 removeObjectAtIndex:0]; //全部删除 [arry1 removeAllObjects]; //4)修改元素 [arry3 replaceObjectAtIndex:2 withObject:@"six"]; //简单改法 arry3[2]=@"five"; //5)查找元素 BOOL isSearch = [arry3 containsObject:@"tow"]; if(isSearch) { NSLog(@"存在"); } else{ NSLog(@"不存在"); } //6)交换数组元素 NSMutableArray *arry5 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil]; [arry5 exchangeObjectAtIndex:0 withObjectAtIndex:4]; NSLog(@"%@",arry5); } return 0;}3、NSMutableArray的错误用法
不正确的写法,这是不可变数组 写法
NSMutableArray *arry3 = @[@1,@2,@tow];//错误创建,赋予了不可变的数组值
NSMutableArray *arry3 = @[@"one",@"tow",@"three"];//错误,赋予了不可变数组正确的写法:
NSMutableArray *arry1 = [NSMutableArray @[@1,@2,@two]; //正确写法NSMutableArray *arry1 = [NSMutableArray @[@"one",@"two",@"three"]; //正确写法
- 黑马程序员——OC语言日志——NSMutableString和NSMutableArray 的介绍及使用
- 黑马程序员——OC语言日志——NSArray的介绍和使用
- 黑马程序员——Foundation框架——NSArray和NSMutableArray的介绍及使用
- 黑马程序员——Foundation框架NSArray和NSMUtableArray的介绍及使用
- 【黑马程序员】OC-Foundation框架—NSMutableString
- 【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray
- 黑马程序员——OC语言日志——description方法介绍及重写
- 黑马程序员——OC语言加强---NSArray 的介绍和基本使用
- 黑马程序员——OC语言加强---NSValue的介绍和使用
- 黑马程序员——NSArray和NSMutableArray的使用
- 黑马程序员 - OC语言 - NSMutableArray及基本使用
- 黑马程序员——OC语言基础---@property关键字介绍及使用
- 黑马程序员—OC(关于OC的一些简单介绍及使用)
- 黑马程序员——OC语言日志——NSString前后缀的检查和NSRang的使用
- 黑马程序员——OC热身——NSString、NSMutableString
- 黑马程序员——OC基础之NSMutableString
- 黑马程序员———OC语言 NSArray的介绍
- 黑马程序员——OC语言日志——多态的概念和实现
- 变量命名规范
- 【软考】——数据流图
- cf 20a BerOS file system
- 理解红黑树的节点插入和删除
- C语言打印指针(地址)的值
- 黑马程序员——OC语言日志——NSMutableString和NSMutableArray 的介绍及使用
- 二:Windows100个系统命令
- javascript基本使用 9 ------call,apply
- Dom
- Log4Net 的使用
- POJ1068双端队列模拟
- Android开发历程之一:Activity组件-Activity生命周期
- 局部变量和成员变量的区别
- linux内核参数注释与优化