iOS-Foundation
1. NSString
通过字符串常量创建,存储在常量区
通过alloc initWithFormat/stringWithFormat创建,存储在堆区,而且不同的平台存储的方式不一样。对于相同的两个创建语句,mac系统会自动对字符串对象优化,但iOS平台就是两个不同对象。不同编译器存储方式也不一样,iOS平台xcode6以下,每次alloc都创建 一个新的对象。但xcode6以上alloc多次指向同一块存储空间。
而initwithString是通过浅copy返回一个字符串对象给我们,所以无论什么平台,什么编译器都是指向同一块存储空间
hasSuffix: //结尾 hasPrefix: //开头 rangeOfString: //包含
substringFromIndex:
substringToIndex:
stringByReplacingOccurrencesOfString:
2. NSURL
常见的URL协议头:http:// ftp:// file://
NSArray数组中的nil是结束符
不同类型的OC对象可以存储在一个NSArray数组中。
数组遍历:
for(int i = 0; i < arr.count; i++)
for(NSObject *obj in arr)
[arr enumerateObjectsUsingBlock:] -> *stop = YES用于停止遍历 ,推荐此方式
makeObjectsPerformSelector:@selector(methodName)
不能通过@[]创建可变数组
字典中保存的数据是无序的
不可变数组中如果有相同key, 则后面的key值不会保存
可变数组中的相同key, 后面的会覆盖掉前面的key值
推荐用CG开头的结构体,不用NS开头的
@(age) 将基本数据类型age转成NSNumber类型, @10把常量转成NSNumber类型
NSValue可以包装任意类型,包括结构体。
NSFileManager
copy : 不可变副本 , 遵循NSCoping协议,重写copyWithZone
mutableCopy : 可变副本, 遵循NSMutableCoping协议,重写mutableCopyWithZone
浅复制:源对象和副本对象都不可变,则copy后是浅复制,其他都是深复制
copy:
- 字符串
- block, 可以保住block中使用的外界对象的命