1 #pragma mark NSString的创建
2 void stringCreate() {
3 // char *s = "A String!"; // C语言中的字符串
4
5 // 这种方式创建出来的字符串是不需要释放的
6 NSString *str1 = @"A String!";
7
8 NSString *str2 = [[NSString alloc] init];
9 str2 = @"A String!";
10 [str2 release];
11
12 NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
13 [str3 release];
14 // 不需要管理内存
15 str3 = [NSString stringWithString:@"A String!"];
16
17
18 NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
19 [str4 release];
20 str4 = [NSString stringWithUTF8String:"A String!"];
21
22 NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
23
24 // 这句代码放在中间会造成2个错误:
25 // 1.前面创建的字符串没有被释放
26 // 2.后面创建的字符串会释放过度,造成野指针错误
27 // str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
28
29 NSLog(@"str5:%@", str5);
30 [str5 release];
31
32 str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
33 }
34
35 void test(NSString **str) {
36 *str = @"123";
37 // s = @"123";
38 }
39
40 void stringCreate2() {
41 // 从文件中读取文本
42 NSString *path = @"/Users/apple/Desktop/test.txt";
43 // 这个方法已经过期,不能解析中文
44 // NSString *str1 = [NSString stringWithContentsOfFile:path];
45
46 // 定义一个NSError变量
47 NSError *error;
48 // 指定字符串编码为UTF-8: NSUTF8StringEncoding
49 NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
50 if (error == nil) { // 没有错误信息
51 NSLog(@"读取文件成功:%@", str1);
52 } else {
53 NSLog(@"读取文件失败:%@", error);
54 }
55
56 NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
57 NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
58 NSLog(@"%@", str2);
59
60 NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];
61 NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
62 NSLog(@"%@", str3);
63 }
64
65 #pragma mark 字符串的导出
66 void stringExport() {
67 NSString *str = @"123456我是字符串!!!!";
68 // 如果文件不存在,会自动创建文件
69 // 如果文件夹不存在,会直接报错
70 NSString *path = @"/Users/apple/Desktop/abc.txt";
71
72 NSError *error;
73 // 编码指定错误也会报错
74 // YES代表要进行原子性操作,也就是会创建一个中间的临时文件
75 [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
76 if (error) {
77 // [error localizedDescription]会返回主要的错误信息
78 NSLog(@"写入失败:%@", [error localizedDescription]);
79 } else {
80 NSLog(@"写入成功");
81 }
82 }