NSString 2014年11月15日 星期六 17:29 ---------什么是NSString:----------------- 一个NSString对象就代表一个字符串(文字内容) 一般称NSString为字符串类 ---------NSString的创建:--------------- NSString *s1 = @"你好,中国"; //一般用第一个 NSString *s2 = [[NSString alloc]initWithString:@"你好,中国"]; NSString *s3 = [[NSString alloc]initWithFormat:@"%@",@"你好,中国]"; NSString *s4 = [NSString stringWithFormat:@"%@",@"你好,中国"]; //格式化的方式一般用这个 ----------不同方式创建字符串的区别------------ 1> NSString *s1 = @"你好中国"; NSString *s2 = s1; NSLog(@"%p-------%p",s1,s2); //地址一样,因为把s1的地址赋值给了s2。 2> NSString *s1 = @"你好中国"; NSString *s2 = @"你好中国"; //对于直接创建的字符串比如NSString *s1 = @"abc"; 这种叫做字符串常量,字符串常量会被保存在一个常量区里,当创建了第二个字符串常量时,系统会拿他跟常量区内的进行比对,如果相同,常量区只会保存之前那份,如果不同,才会放进常量区。所以上面的s1,s2看似是两个变量,但实际上都指向了常量区的同一个字符串对象。 3> NSString *s1 = @"123"; //常量区123 NSString *s2 = [NSString stringWithFormat:@"%d",123]; //类方法里封装了alloc,会在堆里创建一个新的对象。 NSString *s3 = [NSString stringWithFormat:@"%d",123];//又在堆里创建了一个新的对象,两个堆对象内存不一样。 --------字符串的不可变性--------- NSString *s1 = [NSString stringWithFormat:@"%d",123]; s1 = @"456"; NSLog(@"%p",s1); //指针s1已经改为指向对象456,但是对象123完全没变。 --------NSString读写文件--------------- //读取文件内容 NSError *err = nil; NSString *str = [NSString stringWithContentsOfFile:@"/Users/sy/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&err ]; /*需要传入三个参数:路径,编码,是否出错 。 其中编码一般都用:NSUTF8StringEncoding UTF8编码包含了所有语言 err变量用来保存出错信息,一开始设置值为nil,表示没有任何错误,如果在执行时出错了,err变量中就是保存错误信息的对象,那么err就不是nil了。只要判断err是否为nil,即可知道读取文件是否成功。*/ If (err != nil){ //表示读取失败 NSLog(@"读取文件失败,详细错误信息:"); NSLog(@"%@",[err localizedDescription]); } else { //表示读取成功 NSLog(@"读取文件成功"); NSLog(@"%@",str); } -------将NSString 写入到文本文件----------- NSString *s1 = @"你好!"; NSError *err = nil; [s1 writeToFile:@"/Users/sy/Desktop/test1.txt" atomically:YES encoding:NSUTF8StringEncoding error:&err]; /*需要传入四个参数:路径,是否是原子的,编码,是否出错 atomically: 原子的。NO:如果文件写入不完整,则不会创建文件。*/ If (err != nil) { NSLog(@"%@",[err localizeDescription]); } else { NSLog(@"写入成功"); }
|