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.设计单例模式要保证实例的唯一性,必须重写覆盖某些基础类的方法
|
|