Objective-C之foundation框架中的NSString的使用方法、指针基本用法、读取本地和远程文件

本文详细探讨了Objective-C与Swift两种语言在iOS开发领域的应用与区别,包括其语法特点、性能表现以及在实际项目中的优势与挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建NSString的方法:

NSString *str1 = @"Hello World";
NSString *str2 = [[NSString alloc] init];
str2 = @"Hello World";
[str2 release];

NSString *str3 = [[NSString alloc] initWithString:@"Hello World"];
[str3 release]; //内存被回收,但是变量可改变指针位置,继续使用该变量
str3 = [NSString stringWithString:@"hello"]; //这种方法不需要管理内存,因为它引用的是NSString的静态方法


//传入C语言中的字符串,转成OC字符串
NSString *str4 = [[NSString alloc] initWithUTF8String:"Hello World"];
[str4 release];
str4 = [NSString stringWithUTF8String:"hello"]; //这种方法不需要管理内存,因为它引用的是NSString的静态方法

//格式化    %.2f:float类型的,保留两位小数
NSString *str5 = [[NSString alloc] initWithFormat:@"my age is %i and height is %.2f", 25, 1.76f];
[str5 release];
str5 = [NSString stringWithFormat:@"hello"]; //这种方法不需要管理内存,因为它引用的是NSString的静态方法


以下方式存在内存泄露
//格式化    %.2f:float类型的,保留两位小数
//[[NSString alloc] initWithFormat:@"my age is %i and height is %.2f", 25, 1.76f]; 没有被释放
NSString *str5 = [[NSString alloc] initWithFormat:@"my age is %i and height is %.2f", 25, 1.76f];
//[NSString stringWithFormat:@"hello"];是自动释放的,不应该在运行[str5 release] 来释放内存
str5 = [NSString stringWithFormat:@"hello"]; 
[str5 release]; //野指针错误


下面是demo代码:
demo主要演示指向指针的指针、读取远程、本地文件内容的方法


#import <Foundation/Foundation.h>

void  test(){
   NSString *path = @"/Users/gongpb/develop/NSString/NSString/test.txt";
   
    //过期方法,不能读取中文
   NSString *str = [NSString stringWithContentsOfFile:path];
   NSLog(@"text.txt content is :%@",str);
  
   NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
   NSLog(@"test.txt content is :%@",str1);
   
   /**
    这种异常机制不经常使用
    @try {
    }
    @catch (NSException *exception) {
    }
    @finally {
    }
    **/
    NSError *error;
    //error:(NSError **)error;   **代表指向指针的指针
    NSString *str2 = [NSString stringWithContentsOfFile:path
                    encoding:kCFStringEncodingGB_18030_2000  error:&error];
    if (error==nil) {
        NSLog(@"success");
    }else{
        NSLog(@"error : %@",error);
    }
    NSLog(@"text.txt content is 2:%@",str2);

    //  file:// 这两个反斜杠是固定的,USers前边的一个反斜杠 是代表跟路径
    NSURL *url = [NSURL URLWithString:@"file:///Users/gongpb/develop/NSString/NSString/test.txt"];
    NSString *urlStr1 = [NSString stringWithContentsOfURL:url
                                                 encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"url content is :%@",urlStr1);
   
    //remote  url
    NSURL *remoteUrl = [NSURL URLWithString:@"http://www.baidu.com"];
    NSString *remoteStr = [NSString stringWithContentsOfURL:remoteUrl
                                              encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"remote url content is: %@",remoteStr);
   
}

void test1(NSString *str){
    str=@"123";
}

void test2(NSString **str){
    (*str) = @"456";
}

 

 


#pragma mark 字符串导出
void stringExport(){
    NSLog(@"--------export--------");
    NSString *str = @"123456";
    NSString *path = @"/Users/gongpb/develop/NSString/NSString/abc.txt";
    NSError *error;
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
   
    if(error ==nil){
        NSLog(@"success");
    }else{
       
        NSLog(@"error:%@", [error localizedDescription]);
    }   
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
       
        test();
        //指针变量存的是地址
        NSString *s = nil;
        test1(s);  //不能改变s的值
        NSLog(@"s value=%@",s);
       
        //point  &s传入s的地址
        test2(&s);
        NSLog(@"age is %@",s);

 

    //导出
   stringExport();        


    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值