Objective-C之foundation架構中的NSString的使用方法、指標基本用法、讀取本地和遠程檔案

來源:互聯網
上載者:User

建立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;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.