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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qiusiyu 中级黑马   /  2014-11-15 19:18  /  1070 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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(@"写入成功");
}


3 个回复

倒序浏览
愤怒的小表情代表的字符是  :  @   

不要问我为什么会这样,我也不知道{:3_54:}
回复 使用道具 举报
这是技术总结吗
回复 使用道具 举报
香港 发表于 2014-11-15 22:24
这是技术总结吗

是的,一点知识总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马