Object-C KVO的简单概述和示例

KVO(KeyValueObserving)是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的地方非常广泛。(这样的机制听起来类似Notification,但是notification是需要一个发送notification的对象,一般是notificationCenter,来通知观察者。而kvo是直接通知到观察对象。)whenuseKVO,itusuallyfollowsbelow:1注册:-(void)addObserver:(NSObject*)anObserverforKeyPath:(NSString*)keyPathoptions:(NSKeyValueObservingOptions)optionscontext:(void*)contextke...

Object-C KVC的简单概述和示例

KVC的简单概述和示例1、概述KVC是KeyValueCoding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。当使用KVO、CoreData、CocoaBindings、AppleScript(Mac支持)时,KVC是关键技术。2、如何使用KVC关键方法定义在:NSKeyValueCodingprotocolKVC支持类对象和内建基本数据类型。获取值valueForKey:,传入NSString属性的名字。valueForKeyPath:,传入NSString属性的路径,xx.xx形式。valueForUndefinedKey它的默认实现是抛出异常,可以重写这个函数做错误处理。修改值setValue:forKey:setValue:forKeyPath:setValue:forUndefinedKey:setNilValueForKey:当对非类对象属性设置nil时,调用,默认抛出异常。一对多关...

object-c 自定义对象的归档 NSKeyedArchiver NSKeyedUnarchiver

object-c中自定义对象的归档,实现起来就是使用NSCoding协议,调用其中的两个方法-(id)initWithCoder:(NSCoder*)aDecoder-(void)encodeWithCoder:(NSCoder*)aCoder简单的创建一个user类User.m////User.m//CustomArchiveDemo////CreatedbyDurbanon13-11-22.//Copyright(c)2013年WalkerFree.Allrightsreserved.//#import"User.h"@implementationUser#defineAGE@"age"#defineNICKNAME@"nickname"#defineFIRSTNAME@"firstname"#defineLASTNAME@"lastname"#definePASSWORD@"password"#defineEMAIL@"email&qu...

object-c 归档和解归档 NSKeyedArchiver NSKeyedUnarchiver

关于object-c中的归档和解归档的使用,gowhich列出了两个比较的简单的联系的例子第一个练习://数据归档NSString*homeDirectory=NSHomeDirectory();NSArray*array=[NSArrayarrayWithObjects:@"One",@"Two",@999,@"Three",@"Four",nil];NSString*filePath=[homeDirectorystringByAppendingPathComponent:@"data.archive"];BOOLsuccess=[NSKeyedArchiverarchiveRootObject:array&nb...

object-c的 深copy和浅copy的示例

gowhich最近疯狂了,搞了一个深copy和浅copy的示例下面进行看代码第一个示例:浅copy先声明两个类Car和Engine类Car.h////Car.h//CarDemo////CreatedbyDurbanon13-11-20.//Copyright(c)2013年WalkerFree.Allrightsreserved.//#import<Foundation/Foundation.h>#import"Engine.h"@interfaceCar:NSObject<NSCopying>//@property(nonatomic,retain)Engine*engine;@property(nonatomic,retain)NSNumber*weight;@property(nonatomic,copy)NSString*name;@endCar.m////Car.m//CarDemo////Created&n...

Object-c 深copy 浅copy 自定义copy

深copy指的是对象内的属性的copy,但是深copy的前提是,这个变量是可变的浅copy值的是只copy对象自定义copy调用的是NSCopying协议进行的copygowhich举了一个例子第一个例子,看一下copy与retain的区别,来显示一下copy的作用//retain操作NSMutableArray*array=[[NSMutableArrayalloc]initWithObjects:@"one",@"two",@"three",nil];NSMutableArray*array1=[arrayretain];[array1removeLastObject];NSLog(@"array=%@",array);NSLog(@"arrayretaincount=%ld",[arrayretainCount]);NSLog(@"array1=%@",array1);//copy操作NSMutableArray*copyArray=[[NS...

object-c 文件分块写入 NSFileHandle NSFileManager

object-c文件的分块写入,实现大文件的copy,嘿嘿,实现起来是很简单的,终于知道,系统里面copy大文件是啥样子的啦,来看个代码(gowhich说)://读取大文件,并写入大文件中NSFileManager*fileManager=[NSFileManagerdefaultManager];NSString*homePath=NSHomeDirectory();NSString*srcPath=[homePathstringByAppendingPathComponent:@"android学习路线图介绍.avi"];NSString*targetPath=[homePathstringByAppendingPathComponent:@"android学习路线图介绍1.avi"];BOOLsuccess=[fileManagercreateFileAtPath:targetPath&...

object-c 数据循环写入

gowhich最近手痒写了一个小练习,关于object-c的小练习。将日期按照制定的格式,循环写入文件中写入的实现方法:-(void)writeRun{NSFileManager*fileManager=[NSFileManagerdefaultManager];NSString*homePath=NSHomeDirectory();NSString*filePath=[homePathstringByAppendingPathComponent:@"data_date.txt"];BOOLsuccess=[fileManagercreateFileAtPath:filePath&...

object-c 中 NSFileHandle 和 NSFileManager联合使用

NSFileHandle获取出路文件的手柄NSFileManager处理文件的(创建、删除等)第一个实例:追加数据NSString*homePath=NSHomeDirectory();NSString*filePath=[homePathstringByAppendingPathComponent:@"phone/nsfile_test_data.txt"];NSLog(@"filepath=%@",filePath);NSFileHandle*fileHandle=[NSFileHandlefileHandleForUpdatingAtPath:filePath];[fileHandleseekToEndOfFile];NSString*str=@"要追加的数据";NSData*data=[strdataUsingEncoding:NSUTF8StringEncoding];[fileHandlewriteData:data];[fileHandlecloseFile];第二个实例:追加数据到指定的位置NSString*homePath=NSHome...