A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

NSMutableString
   1.NSMutableString介绍和使用
      NSMutableString继承自NSString,他更加灵活。
      NSMutableString和NSString的区别:
            (1)NSString里面的文字内容是不可变的,而NSMutableString里面的参数是可变的
                //不可变:指的是字符串在内存中的存储空间固定,并且存储的内容不能发生变化
               //可变:指的是字符串在内容中占用的存储空间不固定,并且存储的内容可以被修改
                                      
            (2)使用例子
                #import <Foundation/Foundation.h>
                int main(int argc, const char *argv[]){
                     autoreleasepool{
                        NSString *str = @"Jack";//字符串常量在常量区
                        NSLog(@"str addr = %p",str);//在内存中的位置是A
                        str = @"Rose";
                        NSLog(@"str addr = %p",str);//在内存中的位置是B
                        NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];//在堆区
                        NSLog(@"str addr = %p",str2);//内存空间为C,在堆区
                        [str2 appendString:@"Rose"];
                        NSLog(@"str addr = %p",str2)//内存空间为C,在堆区
                        NSLog(@"str addr = %@",str2);//结果是“Jack@Rose”;
                        //创建一个可变的空字符
                        NSMutableString *str3 = [NSMutableString string];
                        for(int i; i < 10; i++){
                                [str3 appendString:@"itcast"];
                        }
                        
                     }
                     return 0;
                }
     2.NSMutableString的常用方法
        (1)appendString
        (2)appendFormat//格式化的添加字符串
            NSMutableString *str = [NSMutableString string];
            [str appendFormat:@"http://www.baidu.com/%d",100];
            NSLog(@"%@",str);//输出"http://www.baidu.com/100"
        (3)deleteCharactersInRange//在字符串的指定位置删除字符串的一部分内容
            NSMutableString *str = [NSMutableString string];
            [str appendFormat:@"http://www.baidu.com/%d",100];
            NSLog(@"%@",str);
            [str deleteCharactersInRange:NSMakeRange(3,4)]//从第三个位置开始,往后删4个。并且返回值为0,
                                                                                  //因为该方法将已存在的内存缩小,地址没有改变
        (4)insertString//没有返回值
            NSMutableString *str = [NSMutableString string];
            [str appendFormat:@"http://www.baidu.com/%d",100];
            NSLog(@"%@",str);
            [str deleteCharactersInRange:NSMakeRange(3,4)]
            [str insertString:@"p://" atIndex:3];//在位置3之前插入
        (5)replaceCharactersInRange
            [str replaceCharatersInRange:NSMakeRange(11,5) wtithString:@"itcast"];
     3.注意事项
        (1)给可变字符串赋值了不可变的值,导致程序运行时出错
            NSMutableString *str = @"abc";//@“abc”是NSString类型,而str是NSMutableString类型
                                                         //编译的时候,str认为自己是NSMutableString类型,不会报错
                                                         //但是动态类型只有在运行的时候,才会确定自己是什么类型,也就是说
                                                         //运行的时候,判断自己为NSString类型
            [str appendString:@"xxxx"];
        (2)NSMutableString中string属性,该属性可以将原来的字符串覆盖。
            str.string = @" ";以空格覆盖
        (3)开发中是使用NSString还是使用NSMutableString
            绝大多数情况下,使用NSString,在需要对字符串的内容进行操作的时候,使用NSMutableString
        (4)位枚举

1 个回复

倒序浏览
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马