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(@"
str = %@", str);  //字符串的打印.
        
        
        NSString *str2 = [[NSString alloc]initWithString:str];
        //initWithString的意思就是返回一个指定的字符串对象里的内容, 或者是返回一个字符串.
        //initWithString后可以写对象名也可以写字符串, 但是如果写字符串的话会报警告, 而且写字符串那还不如不用initWithString.
        //直接写成NSString *str2 = @"Helloc, World"好一些.
        NSLog(@"
str2 = %@", str2);
        
        
        NSString *str3 = [[NSString alloc]initWithUTF8String:"Helloc,World!"];
        //用C的字符串, 创建OC的字符串对象. 注意: 这里只能返回一个字符串, 而不能返回字符串对象.
        //一旦在后面书写字符串对象, 那就会出错.
        NSLog(@"
str3 = %@", str3);
        
        NSString *str4 = [[NSString alloc]initWithFormat:@"Hello %d %c", 5, 'A'];
        //用格式符拼接成一个字符串
        NSLog(@"
str4 = %@", 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
原文地址:https://www.cnblogs.com/iOSCain/p/4018294.html