A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#pragma mark -01. 框架

     苹果或者牛X的第三方事先将程序员在编程的时候经常要用到的一些功能写好.

     把这些功能封装在1个1个的类中. 这些类的集合就叫做框架.

   

     不同的框架中的类是用来做不同的事情的.

     Foundation: 包. 有很多类 函数 数据类型.   

                 基础 基本. 这个框架中定义的是我们最基础的类.

                 其他的框架都是基于Foundation框架的

     AVFoundation:

     UIKit:

     CoreLocation:

     ......

     为大家介绍Foundation框架中最常用的类.

     NSGirl 记.

     特点: 简单到爆.量大.

     NSString

     NSURL

     NSMutableString

     NSArray

     NSMutableArray

     NSNumber

     NSDictionary

     NSMutableDictionary

     NSFileManager

     NSData

     NSDate

     CGPoint CGSize CGRect

     NSValue

     copy

     单例

  #pragma mark -02. NSString类.

    1). NSString是1个类 定义在Foundation框架中.

        NSString对象的作用:用来存储字符串数据的.

    2). 既然是1个类.那么标准的创建NSString对象的方式.

         NSString *str1 = [NSString new];

         NSString *str2 = [[NSString alloc] init];

         NSString *str3 = [NSString string]   

         以这样的方式创建的字符串对象中存储的字符串数据是 @""  空字符串.

    3). NSString对象是OC中最常用的对象.

        所以,为了快速的创建NSString对象.

        OC提供了一种更为快捷的方式创建NSString对象.

        使用@符号.

        @"jack"  是创建NSString对象的简写方式.

                 本质上着是创建1个NSString对象,这个对象中存储的是"jack"这个字符串.

        NSString *str = @"jack";

        @"jack" 这是1种创建字符串对象的简写方式.实际上是创建了1个字符串对象,将jack存储进去.

        str中存储的是这个对象的地址.

    4). %p 是打印指针变量的值.

        %@ 是打印指针指向的对象. 调用对象的description方法.

3. NSString的恒定性.

    1). 我们创建字符串对象的时候,如果使用@来快速创建,

        那么这个字符串对象是存储在 常量区中的.

        如果调用类方法来创建字符串对象,这个字符串对象是存储在堆空间中的.

         NSString *str1 = @"jack";  //这个字符串对象存储在常量区的

         NSString *str2 = [NSString new]; //这个字符串对象是存储在堆区的.      

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

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

         你会发现,这两个对象的地址相差很多 说明他们不在1个区

    2). 存储在内存中的字符串对象.无论是在堆还是常量区.

        这个字符串对象的内容是无法更改的.

        字符串对象一旦创建,这个字符串对象中存储的字符串数据就不能改变.

        永远都只能存储这个.

        我们为NSString指针重新赋值1个字符串的时候. 并不是修改原来的那个字符串.

        而是重新的创建了1个字符串对象,将这个新的字符串的地址赋值给指针.

        不可更改性,即针对堆区也指针对常量区的字符串对象.

    3). 当系统准备要在内存中创建个字符串对象的时候.

        比如: 当准备要在常量区创建字符串对象的时候,会先检查这个常量区中是否有相同内容的字符串对象.

             如果有,直接指向,如果没有才会创建.

        堆区呢?

        1). 如果字符串对象创建在堆区,不会去检查常量区.

            只会检查堆区中是否有相同内容的字符串对象,如果有直接指向 如果没有才会重新的创建.

    4). 常量区中的数据是不会被回收的.所以存储在常量区中的字符串不会被回收.

        为什么字符串不允许回收呢?

        提高效率.

        当字符串第2次使用的时候,效率就跟高了. 因为不用创建字符串对象了.

4. NSString是1个类. 就应该有很多个方法.

    最最最最常用的几个方法.

    1). 得到字符串的长度.

        @property (readonly) NSUInteger length;

    2). 得到指定下标的字符.

        - (unichar)characterAtIndex:(NSUInteger)index;

        返回值是unichar 打印unichar使用%C

    3). 以拼接变量的方式组成1个新的字符串

        + (instancetype)stringWithFormat:(NSString *)format, ...

    4). 判断两个字符串是否相等.

        == 判断的是左右两边的数据的值是否相等.

        要判断的是两个字符串指针指向的字符串对象的内容是否相同.

        所以,判断两个字符串的内容是否相同 千万不要使用==

        而是应该使用对象方法

        - (BOOL)isEqualToString:(NSString *)aString;

    5). 将C语言的字符串转换为OC字符串对象.

        + (nullable instancetype)stringWithUTF8String:(const char *)nullTerminatedCString;

        nullable 代表返回的对象有可能是nil.

    6). 将OC字符串转换为C字符串. ---

        @property (nullable, readonly) __strong const char *UTF8String

#pragma mark -03-NSString的常用方(1)

1. 将字符串的内容写到指定的文件中

    - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

2. 从指定的文件中读取字符串数据.

    + (nullable instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;

3. 字符串对象不仅可以从磁盘上读取文件的内容.

    还可以从网络上读写数据.

    可以读取1个网页的源代码.ftp服务器上的文件也可以读取.

    网页地址,ftp文件地址.

    URL 统一资源路径. 也就是1个网址.ftp文件的地址. 磁盘上的文件的地址.

    网址的URL标准写法: http://www.itheima.com

    ftp文件的URL标准写法: ftp://server.itheima.com/aa.avi

    磁盘文件路径:   file:///Users/Itcast/Desktop/abc.txt

    NSString可以从1个URL路径中读写数据.

    1). 先将URL路径封装在1个NSURL对象中

         NSURL *url1 = [NSURL URLWithString:@"http://www.itheima.com"];

         NSURL *url2 = [NSURL URLWithString:@"ftp://server.itheima.com/1.txt"];

         NSURL *url3 = [NSURL URLWithString:@"file:///Users/Itcast/Desktop/abc.txt"];

    2). 使用类方法从NSURL对象中读取数据.

        + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

    3). 往NSURL中写入数据.

        - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马