1,获取运行的时间 单位:毫秒
date_s = CFAbsoluteTimeGetCurrent(); for (id obj in test) { int key = [obj intValue]; sum += key; sum -= key; } date_e = CFAbsoluteTimeGetCurrent();2,enumerateObjectsUsingBlock:的使用
[langArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOLBOOL *stop) { NSLog(@"idx=%d, id=%@", idx, obj); }];
[langArray enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOLBOOL *stop) { NSLog(@"idx=%d, id=%@", idx, obj); }];
这个enumerateObjectsWithOptions:usingBlock:方法比enumerateObjectsUsingBlock:方法多传了一个参数,这个参数指定了遍历的顺序。
4.isKindOfClass,isMemberOfClass
-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例
@interface Person : NSObject @interface Teacher : Person NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Person *person = [[Person alloc] init]; Teacher *teacher = [[Teacher alloc] init]; //YES if ([teacher isKindOfClass:[Teacher class]]) { NSLog(@"teacher 是 Teacher类或Teacher的子类"); } //YES if ([teacher isKindOfClass:[Person class]]) { NSLog(@"teacher 是 Person类或Person的子类"); } //YES if ([teacher isKindOfClass:[NSObject class]]) { NSLog(@"teacher 是 NSObject类或NSObject的子类"); } [person release]; [teacher release]; [pool release];
<pre name="code" class="objc"><span style="font-family: Tahoma, Arial, Helvetica, STHeiti;">NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; </span>Person *person = [[Person alloc] init]; Teacher *teacher = [[Teacher alloc] init]; //YES if ([teacher isMemberOfClass:[Teacher class]]) { NSLog(@"teacher Teacher类的成员"); } //NO if ([teacher isMemberOfClass:[Person class]]) { NSLog(@"teacher Person类的成员"); } //NO if ([teacher isMemberOfClass:[NSObject class]]) { NSLog(@"teacher NSObject类的成员"); } [person release]; [teacher release]; [pool release];
5,NSUserDefaults的使用
NSUserDefaults是单例,同时也是线程安全的。
NSArray *langArray = [[NSUserDefaults standardUserDefaults] arrayForKey:@"AppleLanguages"];
if([[NSUserDefaults standardUserDefaults] objectForKey:@"message"]==nil){ [[NSUserDefaults standardUserDefaults] setObject:@"This_is_my_default_message" forKey:@"message"]; }
代码意思是判断NSUserDefaults的“message”key 在dictionaryRepresentation中是否存在,如果不存在就
设置“message”key为This_is_my_default_message。
在加上句[[NSUserDefaults standardUserDefaults] synchronize];,这样这个设置就存到默认参数中了
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。
因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了。
NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。
原理:
你可能会问一个问题:NSUserDefautls将数据存储在什么地方了???我都没有显示的指定路径???很疑惑吧。。。。
用NSUserDefaults存储的数据下次程序运行的时候依然存在,它把数据存储在什么地方了?如何能够清除?
其实它存储在应用程序内置的一个plist文件里,这个可以根据路径看到。
比如说这个是你的程序沙盒位置
/UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(这个是应用程序对应在mac上的位置)
这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults
想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。