NSFileManager介绍
用来管理文件系统的,他可以用来进行常见的文件/文件夹操作
path这个文件或文件夹是否存在NSFileManager介绍
用来管理文件系统的,他可以用来进行常见的文件/文件夹操作
path这个文件或文件夹是否存在
- NSString *path = @"/Users/line/Desktop/1.txt";
-
- NSFileManager *file = [NSFileManager defaultManager];
-
- //这个文件或文件夹是否存在
- BOOL isYes = [file fileExistsAtpath];
path这个文件或文件夹是否存在, isDirectory代表是否为文件夹path这个文件或文件夹是否存在, isDirectory代表是否为文件夹
- NSString *path = @"/Users/line/Desktop/1.txt";
- //定义路径
- NSFileManager *file = [NSFileManager defaultManager];
- //创建对象
- 定义isDir存储是否为目录
- BOOL isDir;
- BOOl isExist = [file fileExistsAtPath:path isDirectory:&isDir];
判断文件是否可读
[fm isReadableFileAtPath;filePath];
判断文件是否可写
[fm isWritableFileAtPath;filePath];
判断文件是否可删除
[fm isDeletableFileAtPath;filePath];//返回的是BOOL型
NSFileManager用法深入
NSFileManager *fm=[NSFileManagerdefaultManager];
如何获取文件的信息(属性)
NSDictionary *dic=[fmattributesOfItemAtPath:filePath error:nil];
获取指定目录下的文件及子目录
Arr= [fm contenesOfDirectortyAtPath;dirPatherror:nil];
获取指定目录下的文件及目录信息(不在获取后代路径)
[fm moveItemAtPath:createDirPathtoPath:targetPath error:nil];
如何移动文件
[fmremoveIntemAtPath:targetPath error:nil];
如何删除文件沙盒:
每个ISO应用都有自己的应用沙盒,就是文件系统目录
获取沙盒根目录:
NSString *sandBoxPath = NSHomeDirectory();
获取Documents目录
NSString *docPath = NSSearchPathForIirectoriesInDomains:
第一个参数:获取沙盒的文件夹名称
二:NSUserDomainMask 用户主目录中
三:YES/NO 是否获取全路径
NSPoint是CGPoint的一个别名
//用来 表示二维平面的一个 点
//包含两个成员 x(点的x方向) y(y方法)
OC中特有的赋值方式
CGPoint c4 = CGPointMake(10, 10);
NSPoint np2 = NSMakePoint(5, 5);
CGSize和NSSize
OC中特有的方式
CGSize s2 = CGSizeMake(100, 100);
NSSize ns = NSMakeSize(10, 10);
CGRect 和 NSRect
// 表示在平面上左上角是某个点的矩形区域
// origin 表示 矩形的左上角的点
// size 表示 矩形的大小
OC特有的方式
CGRect r3 = CGRectMake(10, 10, 100, 30);
NSRect nr1= NSMakeRect(10, 10, 50, 50);
NSNumber
将基本数据包装成为对象
@(变量名) @18 转化成为NSNumber对象@把数值包装成为对象NSValue
主要用来把指针,CGRecct结构体包装成对象
对于自定义的结构体<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><pre name="code" class="objc">MyDate md ={2015,5,7};
NSValue *val = [NSValue valueWithBytes:&md objectType:@encode(MyDate)]
MyDate tmd;
[val getValue:&tmd];获取结构体的值 保存到tmd中</span></span></span>
NSDate
可以表示时间[NSDate date]
NSDate *date = [NSDate date];
格式化日期:
NSDateForMatter *formatter = [NSDateForMatter new];
Formatter.dateFormat = @’’yyyy年MM月dd日 HH:mm:ss”;
yyyy表示四位的年份
MM表示2位的月份
dd表示2位的天数
HH表示24小时制的小数 hh 12小时值
mm 表示2位的分钟数
ss表示2位的秒数
NSString *dateStr = [formatter stringFromDate :date]
日期对象::NSCalendar
<span style="font-size:18px;"><span style="font-size:18px;">NSDate *date = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *coms = [cal components:NSCalendarUnitYear|NSCalendaarUnitDay fromDate:d];
NSLog(@”year:%ld,month:%ld,day:%ld”,coms.year,coms.month,coms.day);</span</span>>
集合对象的内存管理:
只要把对象放到数组中,就发现对象的引用计数+1数组在销毁的时候,对对象发送了一次release
消息销毁顺序::数组先挂->数组向其中的对象release
结论:当对象别添加到数组中的时候,对象的引用计数+1当数组销毁的时候,数组会向他其中的元素发送一次release消息
注意:数组被销毁了,让里面的对象不一定被销毁copy 复制 产生一个副本目的::
要使用某个对象的数据,但是在修改对象的时候不影响原来的内容使用:
一个对象可以调用copy和mutableCopy方法来创建换一个副本对象copy:
创建的是不可变副本mutableCopy:
创建的是可变副本使用前提:copy需要遵守NSCopying协议,实现copyWithZone方法 不可变得对象 copy 产生一个不可变mutableCopy
产生一个可变的对象 可变对象copy产生一个不可变得对象mutableCopy产生一个可变的对象
Copy 浅复制 mutableCopy 深复制
@property 内存管理
非ARC copy:只用于NSString \block
Retain: 处了NSString\ block 以外的变量
Assign:基本数据类型、枚举、结构体(非oc对象)
当2个对象互相引用,一端用retain 一段用assign
ARC copy:只用于NSString\block
Retain:除了NSString\block以外的变量
Weak :当两个对象相互应用是,一段用strong一端用weak
Assign:基本数据类型,枚举,结构体
为自定义类实现copy都是深拷贝
-(id)copyWithZone:(NSZone *)zone
{Dog *dog = [Dog alloc] init];
Dog.name = self.name;Return dog;}
单例模式::
对象在任何时候,都只有一个,
好处,再多各类中共享数据类的对象成为系统中唯一的实例;
提供一个访问点,供客户类共享资源 类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问,这个唯一的实例只能通过子类进行扩展,而且扩展的对象不会破会客户端代码;
要点:保证唯一,程序运行期间,单例类 提供一个接入点(类方法 )
在.m中定义全局变量类 *instances = nil提供一个接入点;
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">+(instancetype)shareInstances{
if(instances == nil){
instances = [类 alloc]init];
Return instances;
}return instances;
}</span></span></span>
需要实现方法::
<span style="font-size:18px;"><span style="font-size:18px;">-(id)copyWithZone:(NSZone *)zone{}
+(id)allocWithZone:(NSZone *)zone{}@synchronized(self){}提供线程保护
-(id)retain{}
-(NSUInteger)retainCount{}
-(oneway.void)release{}
-(id)autorelease{}</span>
</span>