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:

  1. 字符串
  2. block, 可以保住block中使用的外界对象的命

 

posted @ 2020-04-12 16:28  Emyin  阅读(113)  评论(0编辑  收藏  举报