NSNumber、NSValue、NSDate、NSObject
注:OC中数组和字典只能存储OC对象不能存放基本数据类型。
NSNumber
NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象。
NSNumber *number = [NSNumber numberWithInt:]; // 将int类型的10 包装成一个NSNumber对象。
NSLog(@"number=%@", number);//NSNumber类型对象可以当作字符串直接输出。 NSMutableArray *array = [NSMutableArray array];
[array addObject:number]; // 添加数值到数组中 //取出来还是一个NSNumber对象,不支持自动解包(也就是不会自动转化为int类型):
NSNumber *number1 = [array lastObject]; // 将NSNumber转化成int类型:
int num = [number1 intValue]; 常见初始化方法:
+(NSNumber *)numberWithChar:(char)value
+(NSNumber *)numberWithInt:(int)value
+(NSNumber *)numberWithFloat:(float)value
+(NSNumber *)numberWithBool:(BOOL)value -(id)initWithChar:(char)value
-(id)initWithInt:(int)value
-(id)initWithFloat:(float)value
-(id)initWithBool:(BOOL)value NSNumber常用方法:
-(char)charValue
-(int)intValue
-(double)doubleValue
-(BOOL)boolValue
-(NSString *)stringValue
-(NSComparisonResult)compare:(NSNumber *)otherNumber//比较两个数字对象的大小
-(BOOL)isEqualToNumber:(NSNumber *)number
NSValue
NSNumber是NSValue的子类,但NSNumber只能包装数字类型,NSValue可以包装任意值,所以可以用NSValue包装结构体后加入NSArray、NSDictionary等集合中。
CGPoint point = CGPointMake(, ); // 将结构体变量point包装成一个对象value:
NSValue *value = [NSValue valueWithPoint:point]; NSMutableArray *array = [NSMutableArray array];
[array addObject:value]; // 添加value进array NSValue *value1 = [array lastObject]; // 取出当时放进去的value
CGPoint point1 = [value1 pointValue];//解包 BOOL result = CGPointEqualToPoint(point1, point); // CGPointEqualToPoint()方法用来比较两个结构体是否相同。 typedef struct {
int year;
int month;
int day;
} Date;//定义一个结构体
Date date = {, , };//给结构体赋值 //注:void * 代表任何指针 char *type = @encode(Date); //根据结构体类型生成 对应的 类型描述字符串
NSValue *value = [NSValue value:&date withObjCType:type]; // 这里要传结构体的地址&date。value参数是想要包装的数据的地址(如一个NSPoint的地址,可以用&来取地址),type参数是用来描述这个数据类型的字符串,用@encode()指令来生成。 Date date1; // 定义一个结构体变量
[value getValue:&date1]; // 取出包装好的结构体
[value objCType]; //取出类型描述字符串
NSLog(@"year=%i, month=%i, day=%i", date1.year, date1.month, date1.day); //创建NSValue的常用方法:
-(id)initWithBytes:(const void *)value objCType:(const char *)type
+(NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type //NSValue常用方法:
-(void)getValue:(void *)value //获取所包装的数据,保存到value这个地址。
-(const char *)objCType //返回描述所包装数据类型的字符串。
-(BOOL)isEqualToValue:(NSValue *)value
+(NSValue *)valueWithPoint:(NSPoint)point
+(NSValue *)valueWithSize:(NSSize)size
+(NSValue *)valueWithRect:(NSRect)rect
-(NSPoint)pointValue
-(NSSize)sizeValue
-(NSRect)rectValue
NSDate
NSDate *date = [NSDate date]; // date方法返回的就是当前时间(now)
date = [NSDate dateWithTimeIntervalSinceNow:];//返回一个比当前时间晚10秒的一个时间。
date = [NSDate dateWithTimeIntervalSince1970:]; // 从1970-1-1 00:00:00开始返回一个推迟10秒的时间。
date = [NSDate distantFuture]; // 随机返回一个比较遥远的未来时间
date = [NSDate distantPast]; // 随机返回一个比较遥远的过去时间 //NSDate的静态初始化:
+(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs //返回以当前时间为基准,然后过了secs秒的时间。
+(id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs
//返回以2001/01/01 GMT为基准,然后过了secs秒的时间。
+(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs //返回以1970/01/01 GMT为基准,然后过了secs秒的时间。
+(id)distantFuture //返回很多年以后的未来的某一天。
+(id)distantPast //返回很多年以前的某一天. //NSDate的动态初始化:
-(id)addTimeInterval:(NSTimeInterval)secs //返回以目前的实例中保存的时间为基准,然后过了secs秒的时间。
-(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs
//初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。
-(id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate *)refDate //初始化为以refDate为基准,然后过了secs秒的时间。
-(id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs //初始化为以当前时间为基准,然后过了secs秒的时间。 //NSDate取回时间间隔:
-(NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate //以refDate为基准时间,返回实例保存的时间与refDate的时间间隔。
-(NSTimeInterval)timeIntervalSinceNow //以当前时间(now)为基准时间,返回实例保存的时间与当前时间(now)的时间间隔。
-(NSTimeInterval)timeIntervalSince1970 //以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔。
-(NSTimeInterval)timeIntervalSinceReferenceDate //以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔。
+( NSTimeInterval)timeIntervalSinceReferenceDate //以2001/01/01 GMT为基准时间,返回当前时间(now)与2001/01/01 GMT的时间间隔。 //NSDate日期比较:
-(BOOL)isEqualToDate:(NSDate *)otherDate //与otherDate比较,相同返回YES。
-(NSDate *)earlierDate:(NSDate *)anotherDate //与anotherDate比较,返回较早的那个日期。
-(NSDate *)laterDate:(NSDate *)anotherDate //与anotherDate比较,返回较晚的那个日期。
-(NSComparisonResult)compare:(NSDate *)other
/*
该方法用于排序调用:
当实例保存的日期值与other相同时返回NSOrderedSame
当实例保存的日期值晚于other时返回NSOrderedDescending
当实例保存的日期值早于other时返回NSOrderedAscending
**/ //NSDate日期格式化:
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // HH是24进制,hh是12进制:
formatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"] autorelease];
NSString *string = [formatter stringFromDate:date];//日期转为字符串
NSLog(@"%@", string); // 返回的格林治时间,字符串转为日期:
NSDate *date2 = [formatter dateFromString:@"2010-09-09 13:14:56"];
NSObject
Student *stu = [[[Student alloc] init] autorelease]; // isKindOfClass判断对象是否属于某个类 或者 子类:
if ( [stu isKindOfClass:[Person class]] ) {
NSLog(@"stu属于Person或者继承自Person");
} // isMemberOfClass判断对象是否属于某个类(不包括子类):
BOOL result = [stu isMemberOfClass:[Student class]];
NSLog(@"%i", result); [stu performSelector:@selector(test)]; // 间接调用test方法。
[stu performSelector:@selector(test2:) withObject:@"abc"];//间接调用test2方法,@"abc"是test2:方法的参数。
[stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:]; // 延迟2秒后调用test2:方法。 //NSObject常用方法:
-(BOOL)conformsToProtocol:(Protocol)aProtocol //判断对象是否实现了aProtocol协议。
+(BOOL)instancesRespondToSelector:(SEL)aSelector //判断这个类的对象是否拥有参数提供的方法。
-(BOOL)respondsToSelector:(SEL)aSelector //判断对象是否拥有参数提供的方法。 // 类的反射:
NSString *str = @"Person";
Class class = NSClassFromString(str); //字符串变为类。
Person *person = [[class alloc] init];
NSLog(@"%@", person);
NSString *name = NSStringFromClass([Person class]); // Class变成字符串 // 方法的反射:
NSString *method = @"test";
SEL selector = NSSelectorFromString(method);//字符串转换为方法类型。
[person performSelector:selector]; //调用方法选择器指定的方法selector.
NSString *selectorName = NSStringFromSelector(selector); // 将SEL转换为字符串
NSNumber、NSValue、NSDate、NSObject的更多相关文章
- OC NSNumber和NSValue和NSDate和NSData
一 NSNumber // // main.m // 07-NSNumber // // Created by apple on 13-8-12. // Copyright (c) 2013年 itc ...
- oc77--结构体,NSNumber,NSValue,NSDate,NSCalendar
// // main.m // OC中的常用结构体 // #import <Foundation/Foundation.h> int main(int argc, const char * ...
- 02-Foundation-NSMutableString、NSNumber、NSValue、NSDate、NSArray
目录: 一.NSMutableString可变字符串 二.NSNumber数字对象 三.NSValue 四.NSDate日期对象 五.NSArray数组对象 回到顶部 一.NSMutableStrin ...
- iOS NSDate、NSCalendar、NSDateComponents
时间解析(NSDate.NSCalendar.NSDateComponents): 1.使用NSCalendar和NSDateComponents解析日期,直接获取到年月日时分秒.获取到年月日时分秒其 ...
- Swift iOS 日期操作:NSDate、NSDateFormatter
1.日期(NSDate) // 1.初始化 // 初始化一个当前时刻对象 var now = NSDate() // 初始化一个明天当前时刻对象 var tomorrow = NSDate(timeI ...
- iOS ----------NSDate 、CFAbsoluteTimeGetCurrent、CACurrentMediaTime 的区别
框架层: NSDate 属于Foundation CFAbsoluteTimeGetCurrent() 属于 CoreFoundatio CACurrentMediaTime() 属于 QuartzC ...
- (三)宇宙大战 Space Battle -- 场景SCENE切换、UserDefaults统计分数、Particle粒子效果
此<宇宙大战 Space Battle>SpirteKit手机游戏教程共分为三系列: (一)宇宙大战 Space Battle -- 新建场景Scene.精灵节点.Particle粒子及背 ...
- iOS开发 传感器(加速计、摇一摇、计步器)
一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...
- iOS开发——高级篇——传感器(加速计、摇一摇、计步器)
一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...
随机推荐
- CDbConnectionExt.php 23.2实现数据库的主从分离,该类会维护多个数据库的配置:一个主数据库配置,多个从数据库的配置
<?php /** * 实现数据库的主从分离,该类会维护多个数据库的配置:一个主数据库配置,多个从数据库的配置. * 具体使用主数据库还是从数据库,使用如下规则: * 1.CDbComm ...
- 快速搭建 Node.js 开发环境以及加速 npm
如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...
- Qt, 我回来了。。。
说起qt,大学时就有接触,但一直没有深入,这个周六周天利用两于时间重新温习了一下,跟之前用过的vs上的MFC.C++ builder比起来,Qt封装很人性化,库也比较全,写个 一般的小工具很轻松. 参 ...
- C# 正则表达式及常用正则表达式
元字符 描述 .点 匹配任何单个字符.例如正则表达式r.t匹配这些字符串:rat.rut.r t,但是不匹配root. $ 匹配行结束符.例如正则表达式weasel$ 能够匹配字符串"He' ...
- gulp&gulp-less
使用gulp-less插件将less文件编译成css,当有less文件发生改变自动编译less,并保证less语法错误或出现异常时能正常工作并提示错误信息. 1.本地安装gulp-less githu ...
- 使用SE16N_INTERFACE
调用函数直接修改table数据 在PRD上通常没有权限 但是可以激活sap内置的修改模式 SE16N 修改表数据.增加.删除行项目: 1. Execute tcode ...
- 详说 Cookie, LocalStorage 与 SessionStorage
本文最初发布于我的个人博客:咀嚼之味 最近在找暑期实习,其中百度.网易游戏.阿里的面试都问到一些关于HTML5的东西,问题大多是这样开头的:“你用过什么HTML5的技术呀?” 而后,每次都能扯到 Co ...
- Ajax与Json的一些总结
Ajax与Json AJAX=异步javaScript 和XML AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不 ...
- 从PC跳转至wap
<script language="JavaScript">function mobile_device_detect(url){var thisOS=navigato ...
- android 特效UI实现
弧形菜单 https://github.com/daCapricorn/ArcMenu