黑马程序员-[OC]学习之旅-NSFileManager、NSNumber、NSDate

NSFileManager介绍
用来管理文件系统的,他可以用来进行常见的文件/文件夹操作
path这个文件或文件夹是否存在NSFileManager介绍

用来管理文件系统的,他可以用来进行常见的文件/文件夹操作

path这个文件或文件夹是否存在

  1. NSString *path = @"/Users/line/Desktop/1.txt";

  2. NSFileManager *file = [NSFileManager defaultManager];

  3. //这个文件或文件夹是否存在
  4. BOOL isYes = [file fileExistsAtpath];

path这个文件或文件夹是否存在, isDirectory代表是否为文件夹path这个文件或文件夹是否存在, isDirectory代表是否为文件夹

  1. NSString *path = @"/Users/line/Desktop/1.txt";
  2. //定义路径
  3. NSFileManager *file = [NSFileManager defaultManager];
  4. //创建对象
  5. 定义isDir存储是否为目录
  6. BOOL isDir;
  7. 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 = @’’yyyyMMdd日  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>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值