NSString的创建方法(一)
NSString是OC里的三大基本数据结构之一, 也是我们经常使用的数据结构, 关于NSString的使用有好几种方法, 这里只讲解前三种创建和简单使用的方法.
除了直接使用NSString *str = @"Hello, World!"这种普通直接的创建方法, 还有使用下面的三种方法.
第一种:
initWithString: 通过复制一个已有的a字符串, 并且返回给第二个b字符串对象, 所以它们的内容和地址是完全一模一样的, 这个和copy的方法有些类似.
第二种:
initWithUTF8String:通过复制一个C类型的字符串, 并且返回给字符串对象, 和普通创建的方法有些类似, 但不完全相同.
第三种:
initWithFormat:通过给定初始化的字符串, 还可以再添加其他的参数(用逗号隔开), 完成后, initWithFormat就会把初始化的字符串和参数结合在一起, 拼成一个新的字符串.
下面是简单的实验例子.
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSString *str = @"Helloc, World!"; //字符串的简单创建. NSLog(@"\nstr = %@", str); //字符串的打印. NSString *str2 = [[NSString alloc]initWithString:str]; //initWithString的意思就是返回一个指定的字符串对象里的内容, 或者是返回一个字符串. //initWithString后可以写对象名也可以写字符串, 但是如果写字符串的话会报警告, 而且写字符串那还不如不用initWithString. //直接写成NSString *str2 = @"Helloc, World"好一些. NSLog(@"\nstr2 = %@", str2); NSString *str3 = [[NSString alloc]initWithUTF8String:"Helloc,World!"]; //用C的字符串, 创建OC的字符串对象. 注意: 这里只能返回一个字符串, 而不能返回字符串对象. //一旦在后面书写字符串对象, 那就会出错. NSLog(@"\nstr3 = %@", str3); NSString *str4 = [[NSString alloc]initWithFormat:@"Hello %d %c", 5, 'A']; //用格式符拼接成一个字符串 NSLog(@"\nstr4 = %@", str4); /* 注意:字符串从刚开始创建, 无论是使用什么方法, 都是Helloc, World!, 永远不会改变. */ //记住, 因为这里是用alloc方法创建, 所以我们需要用手动释放引用计数. //当然, 你也可以自己创建一个自动释放池, 把这里对象都放进释放池里, 结束后就自动释放. [str2 release]; [str3 release]; [str4 release]; } return 0; }
输出的结果:
2014-10-11 09:15:52.307 NSString[492:303] str = Helloc, World! str = 0x100001030 2014-10-11 09:15:52.308 NSString[492:303] str2 = Helloc, World! str2 = 0x100001030 2014-10-11 09:15:52.309 NSString[492:303] str3 = Helloc,World! str3 = 0x1001038b0 2014-10-11 09:15:52.309 NSString[492:303] str4 = Hello 5 A str4 = 0x100103740 Program ended with exit code: 0