上一篇文章我们已经讲解过关于NSString的前三种创建方法, 现在我们来讲另外三种创建的方法, 这三种方法也叫做创建临时字符串.
这三种方法分别就是:
stringWithUTF8String:将一个C类型的字符串转换成一个OC的字符串, 和前面提到的initWithUTF8String有些类似, 但是不同的是, 它不使用alloc来创建.
stringWithFormat:将一个已经初始化的字符串和一些自定义参数返回给字符串对象, 和initWithFormat类似, 但它也不使用alloc来创建.
stringWithString:将一个已有的a字符串对象复制返回给b字符串对象, 和initWithString类似, 同样不实用alloc来创建.
为什么说这三种方法是临时创建的呢?
那是因为, 这三种方法不使用alloc init 和new来创建, 所以他们的引用计数释放不需要由我们来释放, 和自动释放引用计数类似, 一旦使用完之后就会自动释放.
下面是这三种方法的简单使用例子:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = [NSString stringWithUTF8String:"Hello, World"]; //将C字符串转换成OC的字符串对象 NSString *str2 = [NSString stringWithFormat:@"%d %@ %c", 1, @"Hello", ‘R‘]; //使用格式符创建一个临时字符串对象 NSString *str3 = [NSString stringWithString:str]; //使用一个字符串, 创建另一个字符串. //PS:使用stringwith创建的字符串对象, 都是属于自动释放字符串对象,所以不需要写release释放. /* 注意:字符串从刚开始创建, 无论是使用什么方法, 都是Helloc, World!, 永远不会改变. */ NSLog(@"\nstr = %@\nstr = %p", str, str); NSLog(@"\nstr2 = %@\nstr2 = %p", str2, str2); NSLog(@"\nstr3 = %@\nstr3 = %p", str3, str3); } return 0; }
下面是输出的结果:
2014-10-11 09:38:08.821 TemporaryNSString[556:303] str = Hello, World str = 0x100200be0 2014-10-11 09:38:08.823 TemporaryNSString[556:303] str2 = 1 Hello R str2 = 0x100204310 2014-10-11 09:38:08.823 TemporaryNSString[556:303] str3 = Hello, World str3 = 0x100200be0 Program ended with exit code: 0
时间: 2024-10-17 10:54:27