1.NSNull
空对象,使用NSNull可以将表示“什么都没有”的值放到数组或者字典里
NSNull null
NSNull是一个类,[NSNull null]创建一个表示什么都没有的空对象
nil 是指向0x0地址的指针,可以为对象赋值,表示对象不存在
NULL 1.c类型的空指针 2.null在打印的时候表示空值
Nil [Class class]; 空的类
[NSNull null]得到的空对象的地址是固定的,所以可以在逻辑中判断是否是空的。不管在哪里创建的空对象,地址都是一样的。
2.NSData
字节流
NSString *[email protected]"hello world!";
将一个字符串转换成NSData的对象
NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%s",data.bytes);
将NSData对象转化成字符串
NSString *newStr=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",newStr);
3.NSSet
集合 哈希表 散列算法
NSSet 无序
NSArray 有序 都是存储不同的对象
创建集合和创建数组相似
NSSet *set=[[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",nil]; NSLog(@"%@",set); 输出结果无序 NSSet *set2=[[NSSet alloc] initWithObjects:@"one",@"three",@"two",@"four",nil]; BOOL ret =[set isEqualToSet:set2]; NSLog(@"%d",ret);返回值YES 1 BOOL ret =[set isSubsetOfSet:set2];判断第一个集合是否是第二个集合的子集合 返回值YES 1
4.NSMutableSet
NSMutableSet是NSSet的子类,除了具有NSSet的方法外,还可以动态的添加删除元素
1 创建可变集合 NSMutableSet *set=[NSMutableSet set]; [set addObject:@"One"]; [set addObject:@"two"]; [set addObject:@"three"]; [set addObject:@"Two"]; NSLog(%"%@",set);输出One two three,两个two只保留一个 2 删除集合中的元素 [set removeObject:@"three"];还剩 One two 3 添加 NSSet *set2=[NSSet setWithObject:@"five",@"six",@"one",nil]; [set unionSet:set2];把set2中的内容合并到set中 [set minusSet:set2];把set2中的内容从set1中删除,只剩two了 ##NSIndexSet 指数集合 索引集合 是一个变种,和NSSet没有继承关系
5.NSDate
1 创建 NSDate *now =[NSDate date]; NSLog(@"now>>>>%@",now); 输出 2015-07-20 6:44:20 +0000 比现在慢8小时,北京东8区,时区 2 通过时间差获取另外一个时间 NSTimeInterval interval=60*60*24; NSDate *yesterday=[now dateByAddingTimeInterval:-interval]; %@ yesterday 输出昨天的时间 NSDate *tomorrow=[now dateByAddingTimeInterval:interval]; %@ tomorrow 输出明天的时间 NSDate *someDate = [NSDate dateWithTimeInterval:-60*60*24*7 sinceDate:tomorrow]; NSLog(@"someDate >>>> %@", someDate); NSDate *date1 = [NSDate dateWithTimeIntervalSinceReferenceDate:60*60*24*365*15]; NSLog(@"date1 >>>> %@", date1); 3 判断 比较日期 now isEqualToDate:tomorrow NSDate *earlierDate = [tomorrow earlierDate:now]; // 早一点的日期 NSDate *laterDate = [tomorrow laterDate:now]; // 晚一点的日期 NSLog(@"earlierDate >>>> %@", earlierDate); NSLog(@"laterDate >>>> %@", laterDate); // 求时间差 NSTimeInterval interval1 = [now timeIntervalSinceDate:tomorrow]; NSLog(@"interval1 >>>>> %lf", interval1); /************* NSTimeZone *************/ NSTimeZone *localZone = [NSTimeZone defaultTimeZone]; NSLog(@"localZone >>>>> %@", localZone); NSTimeZone *Taipei = [[NSTimeZone alloc] initWithName:@"Asia/Taipei"]; NSLog(@"Taipei >>> %@", Taipei); ##NSTimeZone 1 时区 NSArray *allZone=[NSTimeZone knownTimeZoneNames]; for(NSTimeZone *zone in allZone){ NSLog(@"zone>>%@",zone); } 2 本地默认时区 NSTimeZone *localZone=[NSTimeZone defaultTimeZone]; NSLog(@"local>>>%@",localZone); 输出Asia shanghai 亚洲上海 3 /************* NSDateFormatter *************/ // 通过对 NSDateFormatter的设置来输出任意格式的时间文本 NSDateFormatter *dateFromatter = [NSDateFormatter new]; [dateFromatter setDateStyle:NSDateFormatterShortStyle]; [dateFromatter setTimeStyle:NSDateFormatterShortStyle]; [dateFromatter setTimeZone:localZone]; NSLog(@"now >>>>>> %@", [dateFromatter stringFromDate:[NSDate date]]); [dateFromatter setDateFormat:@"yy-M-dd HH:mm:ss 今天是第w 周 上午/下午:a "]; NSLog(@"now >>>>>> %@", [dateFromatter stringFromDate:[NSDate date]]); // 把时间格式的字符串变成时间对象 NSString *timeStr = @"85------10/28 17:15:00"; [dateFromatter setDateFormat:@"yy------MM/dd HH:mm:ss"]; NSDate *birth = [dateFromatter dateFromString:timeStr]; NSLog(@"birth >>>> %@", birth);
6.NSTimer
计时器
[NSTimer scheduledTimerWithTimeInterval:1 target:student selector:@selector(sleep) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] run];
7.id
OC 语法推出一个id关键字,表示在编译过程中不指定类型。使用id类型编写代码对运行不会有任何影响。