黑马程序员技术交流社区
标题: 【雷锋助你】03-NSString 上 [打印本页]
作者: qiusiyu 时间: 2014-11-15 19:18
标题: 【雷锋助你】03-NSString 上
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(@"写入成功");
}
作者: qiusiyu 时间: 2014-11-15 19:24
愤怒的小表情代表的字符是 : @
不要问我为什么会这样,我也不知道{:3_54:}
作者: 香港 时间: 2014-11-15 22:24
这是技术总结吗
作者: qiusiyu 时间: 2014-11-16 14:47
是的,一点知识总结
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |