首页 > 代码库 > NSString的创建方法(二)

NSString的创建方法(二)

上一篇文章我们已经讲解过关于NSString的前三种创建方法, 现在我们来讲另外三种创建的方法, 这三种方法也叫做创建临时字符串.

 

这三种方法分别就是:

stringWithUTF8String:将一个C类型的字符串转换成一个OC的字符串, 和前面提到的initWithUTF8String有些类似, 但是不同的是, 它不使用alloc来创建.

stringWithFormat:将一个已经初始化的字符串和一些自定义参数返回给字符串对象, 和initWithFormat类似, 但它也不使用alloc来创建.

stringWithString:将一个已有的a字符串对象复制返回给b字符串对象, 和initWithString类似, 同样不实用alloc来创建.

 

为什么说这三种方法是临时创建的呢?

那是因为, 这三种方法不使用alloc initnew来创建, 所以他们的引用计数释放不需要由我们来释放, 和自动释放引用计数类似, 一旦使用完之后就会自动释放.

 

下面是这三种方法的简单使用例子:

#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, Worldstr = 0x100200be02014-10-11 09:38:08.823 TemporaryNSString[556:303] str2 = 1 Hello Rstr2 = 0x1002043102014-10-11 09:38:08.823 TemporaryNSString[556:303] str3 = Hello, Worldstr3 = 0x100200be0Program ended with exit code: 0

NSString的创建方法(二)