黑马程序员技术交流社区

标题: OC Foundation框架重点知识总结 [打印本页]

作者: 彼岸花开    时间: 2016-4-1 12:15
标题: OC Foundation框架重点知识总结
16.Foundation框架----NSString 字符串

"Foundation框架的具体方法应该不会问的"

    OC中的字符串对象,一经创建,不可改变,常量  //应该不会问相关方法,可能直接编程

//        列举几个比较重要的方法
        检查前缀:   hasPrefix:
        检查后缀:   hasSuffix:
        字符串比较:  compared:   //返回枚举类型[-1,0,1];具体的枚举名称:NSOrderedAscending, NSOrderedSame,
                                                      //          NSOrderedDescending
        查找字符串:  rangeOfString:  //返回值为NSRange结构体,一个 .location,一个 .length
                                    //如未找到,.location = NSNotFound(无符号长整型最大值), length = 0;
        字符串截取:  substringFromIndex:     //从指定索引开始截取,包括该索引
                    substringToIndex:       //截取到指定索引,不包括该索引
                    substringWithRange:      //根据NSRange值来截取
        字符串替换: stringByReplacingOccurrencesOfString:    withString:  //用指定字符串替换目标字符串
        获取字符串长度:    str.length
        获取字符串索引处字符:  characterAtIndex:


    NSMutableString:NSString的子类,可以对可变字符串进行增删改查
        添加字符串:  appendString:
        删除字符串:  deleteCharactersInRange:
        插入字符串:  insertString: atIndex:
        替换内容:    replaceCharactersInRange:   withString

    "注意":不要将常量字符串赋值给NSMutableString



17.Foundation框架----NSArray  数组
    NSArray是OC中的数组.它有序存储任意OC对象,不能存储基本数据类型,一旦创建,内容固定不可变
        NSArray *arr = [NSArray arrayWithObjects:@"one",@"two",@"three",nil]    注意nil不可省略


    NSArray的遍历:三种方式     "考编程"
        1.传统for循环
        2.增强for循环  for(id obj in arr){......}
        3.block方式遍历  [arr enumerateObjectsUsingBlock.......]

    "注意":不要将常量数组赋值给NSMutableArray


18.Foundation框架----NSDictionary 字典
    类似于字典,通过一个@"key"值,查找对应的@"value"值,key和value都是OC对象,不能存储基本数据类型,一旦初始化完毕内容固定不可变.通过%@打印输出NSDictionary,输出的元素顺序是无序的.普通方式定义字典,@"value"写在前,随后跟上@"key".字面量定义字典:@"key":@"value"

    字典元素的存储是按照键值对的方式来存储的,一个@"key"对应一个@"value".如果@"key"相同,保留先存储的对象,后面同@"key"值的对象忽略.如果是用[setObject: @"value" forKey: @"key" ]方式赋值,新值覆盖旧值

    取出@"key"对应的@"value":objectForKey:   或者:dic[@"key"]  表示取出@"key"中的@"value"

    字典的快速遍历:    for(id key in dic){
                        NSLog(@"%@",dic[key]);
                        }

    字典的block遍历: [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
                        NSLog(@"%@ = %@",key,obj);
                    }];

    掌握字典的字面量用法



19.Foundation框架----NSFileManager
    NSFileManager是用来管理系统文件的,可以进行常见文件/文件夹的'创建,拷贝,剪切'等操作.可以判断目录/文件是否可读可写可删可改,也可以访问文件.它使用了"单例模式"('如果单例模式记不清了就不要说这句,很有可能就被问单例')



20.iOS的沙盒机制
    每个iOS应用都有自己的应用沙盒.应用沙盒就是文件系统目录,与其他应用的文件系统隔离,不允许彼此互相访问.使用这种构架出于两方面的考虑:    1.改善用户体验   2.保证系统安全性
    另外,iOS8中已经开放访问


21.OC中常见的结构体
    NSRange:    表示一个范围,包括起点和长度
    CGPoint/NSPoint:    表示二维平面内的一个点的坐标
    CGSize/NSSize:      表示二维平面内某个物体的尺寸
    CGRect/NSRect:      表示某个物体的位置和尺寸(里面包含一个CGSize和一个CGPoint结构体)


22.Foundation框架----NSNumber
    用于将常见的基本数据类型封装成OC对象,方便存入OC数组以及字典中,以及进行其他OC对象操作

23.Foundation框架----NSValue
    NSNumber的父类,主要用来把指针,结构体等包装成OC对象,便于存储.NSValue对象是用来存储C或者OC数据的简单容器,可以保存任意类型的数据

24.Foundation框架----NSDate
    用来表示/获取时间,以及进行一些常见的日期/时间处理


25.集合对象的内存管理
    把一个对象添加到集合中,会对对象作一次retain操作.当对象被从集合中移除时,会对对象作一次release操作.当集合被销毁时会对集合内所有对象集体做一次release操作

26.copy的概念以及使用
    copy的概念通过拷贝对象产生一个副本,可以在使用原数据和副本数据时互不影响.使用copy需要遵从 copyWithZone协议,使用mutableCopy需要遵从mutableCopyWithZone协议

    "浅复制":copy一个不可变对象,只是对不可变对象的引用计数+1,并获得地址,并未产生新的对象
    "深复制":包括:'mutableCopy一个不可变对象'("新对象可变"), 'copy一个可变对象'("新对象不可变") 和
                 'mutableCopy一个可变对象'("新对象可变")
            特点:产生了新的副本.
    一句话:对不可变执行不可变copy是"浅复制",其余都是"深复制","浅复制"没有产生新对象,"深复制"产生了新对象.


27.@property中的copy与retain的区别
    @property中的retain实际是获得对象的地址.没有产生新的副本,只是让对象的引用计数器+1
            而copy是拷贝了新的副本对象,新副本的引用计数器为1



28.单例模式
    单例模式下,
        1.类只能有一个实例对象
        2.它必须自行创建这个对象
        3.必须自行向整个系统提供这个实例的访问点,供客户类共享资源
        4.必须是一个静态类
        5.设计单例模式要保证实例的唯一性,必须重写覆盖某些基础类的方法

作者: 杨冬武    时间: 2016-4-1 16:17
很好,
作者: 我是王觉瘦    时间: 2016-4-2 22:21
我来取干货




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2