NSString字符串初始化总结

   NSString *str1 =@"aThinkbomb";

   NSString *str2 = [[NSString alloc]initWithString:str1];

   NSString *str3 = [NSString stringWithString:str1];

   NSString *str4 = [[NSString alloc]initWithFormat:@"aThinkbomb %@ %d",@"abc",123];

   NSString *str5 = [NSString stringWithFormat:@"aThinkbomb %@ %d",@"abc", 123];

   NSLog(@"%@...%p", str1, str1);

   NSLog(@"%@...%p", str2, str2);

   NSLog(@"%@...%p", str3, str3);

   NSLog(@"%@...%p", str4, str4);

   NSLog(@"%@...%p", str5, str5);


2014-05-31 10:25:26.641 NSsummary[784:303] aThinkbomb...0x100001070

2014-05-31 10:25:26.642 NSsummary[784:303] aThinkbomb...0x100001070

2014-05-31 10:25:26.643 NSsummary[784:303] aThinkbomb...0x100001070

2014-05-31 10:25:26.643 NSsummary[784:303] aThinkbomb abc 123...0x10010b250

2014-05-31 10:25:26.644 NSsummary[784:303] aThinkbomb abc 123...0x10010b300


这是个标准的字符串初始化方法。str2、str3是把str1的地址拷贝过来的。大家可以看到str1、str2、str3地址一样,说明指针指在同一个堆内存地址上。

但是不能这样写:

   NSString *str2 = [[NSStringalloc]initWithString:@"aThinkbomb"];

   NSString *str3 = [NSStringstringWithString:@"aThinkbomb"];

直接给字符串会有警告,这样就等于str1。initWithString和stringWithString只可以写字符串变量,后者是前者的便利构造器。

str3、str4是格式化输出字符串,后者是前者的便利构造器。

NSString *str6 =[NSStringstringWithUTF8String:"大家好"];

stringWithUTF8String是initWithUTF8String的构造便利器

NSString *str7 =[[NSStringalloc]initWithUTF8String:"大家好"];


下面是从网页获取字符串


stringWithContentsOfURL 将网页转换成字符串(便利构造器)

NSUTF8StringEncoding用UTF8编码

error:&error   如果有错误error就会被赋值,localizedDescription按照将本地的信息描述。


下面是从本地文件获取字符串

    NSString *filePath =@"/Users/dlios/Desktop/Object-C/Demo/Demo/area.txt";

   NSError *error1 = nil;

    NSString *str8 = [NSStringstringWithContentsOfFile:filePath encoding:NSUTF8StringEncodingerror:&error1];

   if (error1) {

        NSLog(@"error : %@", [error1localizedDescription]);

exit(1);

    }

    NSMutableString是可变字符串, 对字符串的改变是在原串上改变, 用法和NSString相同, 只是 NSString是不可变字符串, 对字符串的改变是返回一个新的字符串。

    便利构造器可以自动释放内存。以init开头的指派初始化方法不能释放内存。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值