oc基础加强-第05天讲义objective c day_第1页
oc基础加强-第05天讲义objective c day_第2页
oc基础加强-第05天讲义objective c day_第3页
oc基础加强-第05天讲义objective c day_第4页
oc基础加强-第05天讲义objective c day_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Objective-C 基础加强 第 05 天Table of Contents1.roductionNSFileManager的概念与基本使NSFileManager 的级法i.ii. iii. iv.v.vi. vii. viii. ix.x.xi.件思路iOS沙盒(sandbox)机制常结构体NSNumber 与 NSValue Date 的基本使集合的内存管理 copy的基本概念 property 中的 copy单例设计模式1Objective-C 基础加强 第 05 天Objective-C 基础加强 第 05 天roduction2Objective-C 基础加强 第 05 天01

2、-NSFileManager的概念与基本使1 NSFileManager 简介NSFileManager 是来对件进管理的, 包括创建, 移动, 删除等NSFileManager 是个单利的, 所谓的单利, 就是整个程序只允许有个该对象.使 defaultManager 法可以获得该对象2, 常法-(BOOL)fileExistsAtPath:(NSString *)path;(BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL (BOOL)isReadableFileAtPath:(NSString *)path; (BOOL)i

3、sWritableFileAtPath:(NSString *)path; (BOOL)isExecutableFileAtPath:(NSString *)path;*)isDirec(BOOL)isDeletableFileAtPath:(NSString*)path;NSFileManager的概念与基本使3Objective-C 基础加强 第 05 天02-NSFileManager 的级法1, 获取件信息- (NSDictionary *)attributesOfItemAtPath:(NSString*)path error:(NSEr获得所有件信息, 使键值对的形式2, 获得录下

4、的内容- (NSArray *)subpathsAtPath:(NSString *)path;获得件夹下的所有件和件夹, 同时会获得录下的内容(不需要递归)- (NSArray *)subpathsOfDirectoryAtPath:(NSString*)patherror:(NSErro与前个功能样3, 获得当前录下的内容- (NSArray *)contentsOfDirectoryAtPath:(NSString*)patherror:(NSErro包含件与录, 没有递归NSFileManager 的级法4Objective-C 基础加强 第 05 天4, 对件进增删改查创建件- (B

5、OOL)createFileAtPath:(NSString *)path contents:(NSData *)data attNSData 就是数据的类型(与输输出流概念类似)将字符串转换成 NSData 类型使 dataUsingEncoding 法创建件夹- (BOOL)createDirectoryAtPath:(NSString *)pattributes:(NSDictiona- (BOOL)createDirectoryAtPath:(NSString *)path withermediateDirect第个创建录件- (BOOL)copyItemAtPath:(NSStrin

6、g*)srcPath toPath:(NSString *)dstPath移动件(剪切)- (BOOL)moveItemAtPath:(NSString*)srcPath toPath:(NSString *)dstPath移除件或录(全部删除)- (BOOL)removeItemAtPath:(NSString *)path error:(NSError *)error NS_NSFileManager 的级法5Objective-C 基础加强 第 05 天NSFileManager 的级法6Objective-C 基础加强 第 05 天03-件思路件1,只需要点击即可, 但是实际操作需要经

7、历好个步骤2, 件思路1. 发送请求给服务器,要求某个件 request:ht/1.rmvb2. 服务器发出响应,返回件数据 返回进制数据(NSData类型)3. 机客户端利NSData来存放服务器返回的件数据4. 利NSFileManager将NSData的件数据写到新的件中.(createFileAtPath)件思路7Objective-C 基础加强 第 05 天件思路8Objective-C 基础加强 第 05 天04-iOS沙盒(sandbox)机制1, 沙盒的基本概念和作每个ios应都有的应沙盒 (sandbox),应沙盒就是件系统录,与其他应的件系统,ios系统不允许其他应的应沙盒

8、。在以往的iOS系统中,苹果从未开放过安全、隐私 等的内容。这是由于在苹果的系统架构中,所有的 app 都是在单独的沙盒中运,并没有 app 可以实现跨沙盒运。苹果使这种统架构出于两的考虑:是完美的户体验需要对跨应 程序进整合统;是封闭跨应可以保证系统的安全性。在iOS8中已经开放)。(exten扩展阅读:iOS沙盒(sandbox)机制9Objective-C 基础加强 第 05 天是iOS8新开放的种对个固定系统区域的扩展机制,它可以在exten定程度上弥补 iOS的沙盒机制对应间通信的限制。的出现,为户提供了在其它应中使应提供的服务的便捷exten式,如 户可以在Today的widget

9、s中查看应展的简略信息,不再进到的应中,这将是种 全新的户体验;但是,exten的出现可能会减少户启动应的次数,同时还会增开发者 的作量。应沙盒般包括以下个件录:应程序包、s、Libaray(下有Caches和 Preferen录)、tmp。iOS沙盒(sandbox)机制10Objective-C 基础加强 第 05 天应程序含所有的资源件和可执件。s:保存应运时成的需要持久化的数据,iTunes会动备份该录。苹果建议将程 序中建的或在程序中浏览到的件数据保存在该录下,iTunes备份和恢复的时候会包括此录tmp:保存应运时所需的临时数据,使完毕后再将相应的件从该录删除。应没有运 时,系统也

10、有可能会清除该录下的件,iTunes不会同步该录。重启时,该录下的 件会丢失。程序的默认设置和其他状态信息,iTunes会动备份该录。Library:Libaray/Caches:存放缓存件,iTunes不会备份此录,此录下件不会在应退出删除。 般存放体积较,不是特别重要的资源。Libaray/Preferen:保存应的所有偏好设置,ios的Settings(设置)应会在该录中查找 应的设置信息,iTunes会动备份该录。iOS沙盒(sandbox)机制11Objective-C 基础加强 第 05 天2, 沙盒的位置1 Xcode5中模拟器路径为:/Users/户名/Library/Appl

11、icationSupport/Simulator2 Xcode6中模拟器路径为:/Users/户名/ Library/Developer/CoreSimulator在 Devi件夹下, 就是模拟器, 看了根据 plist 件查看模拟器与件夹的对应关系.iOS沙盒(sandbox)机制12Objective-C 基础加强 第 05 天3, 获取沙盒路径获取沙盒根录的法,有以下种:/Home录NSString *homeDirectory = NSHomeDirectory();获取绝对 路径的法s 返回个绝对路径来存放需要NSSearchPathForDirectoriesIn第个参数:要获取的

12、沙盒件夹名称第个参数:Mask = 1,/户主录中Mask = 2,/当前机器中Mask = 4,/络中可的主机Mask = 8,/系统录,不可修改(/System) sMask = 0 x0f,/全部NSUserNSLocal NSNetwork NSSystem NSAll第三个参数:YES/NO 是否获取全路径 YESiOS沙盒(sandbox)机制13Objective-C 基础加强 第 05 天iOS沙盒(sandbox)机制14Objective-C 基础加强 第 05 天05-常结构体1, 常结构体这些结构体, 主要是来设置界布局等NSPo与 CGPoNSSize 与 CGSiz

13、eNSRect 与 CGRect2, 使注意事项1 CoreGraphics2 Make 函数3 苹果官建议在 iOS 开发中使 CG 开头的结构体常见结构体15Objective-C 基础加强 第 05 天06-NSNumber 与 NSValue1, NSNumber在 OC 中的些数据类型(数组与字典)不允许值类型)基础数据类型(, float 等想要后将其基本数据类型, 就显将其包装成 对象类型, 即 NSNumber 类型, 然到数组等数据类型中类似于 C# 中的装箱与拆箱基本数据类型到 NSNumber+(NSNumber(NSNumber (NSNumber (NSNumber

14、(NSNumber (NSNumber (NSNumber (NSNumber (NSNumber (NSNumber (NSNumber (NSNumber (NSNumber (NSNumber (NSNumber*)numberWithChar:(char)value;*)numberWitsignedChar:(unsigned char)value;*)numberWithShort:(short)value;*)numberWit*)numberWith*)numberWitsignedShort:(unsigned short)value;:()value;signed:(uns

15、igned)value;*)numberWithLong:(long)value;*)numberWitsignedLong:(unsigned long)value;*)numberWithLongLong:(long long)value;*)numberWitsignedLongLong:(unsigned long long)value;*)numberWithFloat:(float)value;*)numberWithDouble:(double)value;*)numberWithBool:(BOOL)value;*)numberWith*)numberWiteger:(NSeg

16、er)value NS_AVAILABLE(10_5,2signedeger:(NSUeger)value NS_AVAILABL字量写法NSNumber 与 NSValue16Objective-C 基础加强 第 05 天123YES 1.234(变量)NSNumber - 基本数据类型propertyproperty property property property property property property property property property property property property property(readonly)(readonly) (

17、readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly) (readonly)char charValue;unsigned char unsignedCharValue; short shortValue;unsigned short unsignedShortValue;Value;unsignedunsignedValue;long longValue;unsigned long uns

18、ignedLongValue; long long longLongValue;unsigned long long unsignedLongLongValue; float floatValue;double doubleValue;BOOLNS NSUboolValue;egeregerValue NS_AVAILABLE(10_5,2_0);eger unsignedegerValue NS_AVAILABLE(10_2, NSValue使 NSValueC 或 OC 数据, 是个数据的容器 相当于对 NSNumber的扩展(例如将 结构体到 NSArray 中)常法(结构体)+(NSV

19、alue(NSValue (NSValue*)valueWithPo:(NSPo)po;*)valueWithSize:(NSSize)size;*)valueWithRect:(NSRect)rect;NSNumber 与 NSValue17Objective-C 基础加强 第 05 天propertyproperty property(readonly)(readonly) (readonly)NSPoNSSize NSRectpoValue;sizeValue;rectValue;处理定义结构体valueWithBytes:&结构体变量NSValue *nsValue = NSValue

20、objCType:encodNSArray *array = nsValue; nsValue getValue:&结构体变量;NSNumber 与 NSValue18Objective-C 基础加强 第 05 天07-Date 的基本使1, NSDate 表时间和期个 NSDate 表时间使 NSdate date 获得当前时间(国际期变更线)如果希望设置时区, 可以考虑下代码NSDate *d = NSDate date;NSLog(d = %,d);/设置时区NSTimeZone systemTimeZone; /设置时间间隔NSTimeZone *zone =condsFromGMTF

21、orDate: d; /重新成时间NSegererval= zoNSDate *localeDate= d dateByAddingTimeerval:erval;NSLog(%, localeDate);2, 格式化期使 NSDateFormatter 的 dateFormat 属性设置时间格式字符串yyyy-MM-dd HH:mm:sshh 和 HH 表 12 时与 24 时制使函数获得 时间字符串 和 时间对象(NSString *)stringFromDate:(NSDate(NSDate *)dateFromString:(NSString*)date;*)string;Date 的

22、基本使19Objective-C 基础加强 第 05 天3, 计算OC 中使 NSTimeerval 表时间间隔(double)使下法在当前时间上添加秒数-+(id)addTimeerval:(NSTimeerval)seconds NS_DEPRECATED(10_0, 10_(instancetype)dateWithTimeervalSinceNow:(NSTimeerval)secs;Date 的基本使20Objective-C 基础加强 第 05 天08-集合的内存管理当个对象加到集合中时, 其 retainCount 会 +1当集合被销毁的时候, 集合会给对象发送个 release

23、 消息(利 autorelease机制实现)集合对象的内存管理1.官内存管理原则1 当调、 ew、copy(mutableCopy)法产个新对象的时候, 就必须在最后调次 release 或者 autorelease2 当调retain法让对象的计数器+1,就必须在最后调次 release 或者autorelease2.集合的内存管理细节1 当把个对象添加到集合中时,这个对象会做了次retain操作,计数器会+12 当个集合被销毁时,会对集合的所有对象做次release操作,计数器会-13 当个对象从集合中移除时,这个对象会次release操作,计数器会-13.普遍规律1 如果法名是addin

24、sert开头,那么被添加的对象,计数器会+12 如果法名是removedelete开头,那么被移除的对象,计数器-1集合的内存管理21Objective-C 基础加强 第 05 天09-copy的基本概念copy 表, 使 copy 就会创建个副本copy 的特点就是副本与源么有直接关系, 修改其中个, 另个没有影响1, OC 中的 copy 就是对象的个对象可以调个 copy 法或 mutableCopy 拷copy 创建的是不可变副本(NSString, NSArray, NSDictionary)mutableCopy 创建可变副本2, 使 copy 与 mutableCopy1 cop

25、y : 需要遵守 NSCopying 协议,实现 copyWithZone: 法2 mutableCopy : 需要遵守 NSMutableCopying 协议,实现mutableCopyWithZone: 法3, 拷的案例4, 深拷与前拷深(深拷,内容拷,deep copy)源对象和副本对象是不同的两个对象源对象引计数器不变, 副本对象计数器为1(因为是新产的)本质是:产了新的对象浅(浅拷,指针拷,shallow copy)copy的基本概念22Objective-C 基础加强 第 05 天源对象和副本对象是同个对象源对象(副本对象)引计数器 + 1, 相当于做次retain操作本质是:没有

26、产新的对象copy的基本概念23Objective-C 基础加强 第 05 天10-property 中的 copyproperty 内存管理策略选择1.ARC1 copy : 只于NSStringblock2 retain : 除NSStringblock以外的OC对象3 assign : 基本数据类型、枚举、结构体(OC对象),当2个对象相互引,端 retain,端assign2.ARC1 copy : 只于NSStringblock2 strong : 除NSStringblock以外的OC对象3 weak : 当2个对象相互引,端strong,端weak4 assgin : 基本数据类型、枚举、结构体(OC对象)在 property 中使 copy 的本质- (void)setName:(NSString *)name if (_name = name) return; _name release;_name = name copy;property 中的 copy24Objective-C 基础加强 第 05 天11-单例设计模式单例模式:(Singleton)1,单例模式的意图是是的类的对象成为系统户类 共享资源。的实例,提供个点,供客2, 什么情况下使单例?1. 类只能有个实例,且必须从个为熟知的 法。点对其进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论