IOS杂项合集

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);  
}];  

3,enumerateObjectsWithOptions:usingBlock:的使用

[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];

-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例

<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或者删掉沙盒,也就是你的应用程序然后重新安装。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值