ObjectC类类型.docx_第1页
ObjectC类类型.docx_第2页
ObjectC类类型.docx_第3页
ObjectC类类型.docx_第4页
ObjectC类类型.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Object-c 中的数据类型导航:基本类型ID对象类型常见的有对象类型-NSLog-NSNumber-NSString和NSMutableString-NSArray和NSMutableArray-NSSet和NSMutableSet-NSDictionary和NSMutableDictionary基本类型:Objective-C中的基本类型和C语言中的基本类型一样.主要有:int,long,float,double,char,void, bool等.在Foundation中,也为些数据定义了别名,如:NSInteger为long,CGFloat为double,BOOL等.Objective-C也可以用C语言的构造类型,如数组、结构体、同用体等。对于基本类型变量,不需要用指针,也不用手动回收,方法执行结束会自动回收。ID:在object-c中,对象标识被作为一个特殊的数据类型:id。这个数据类型定义为引用对象的指针。实际上是指向对象实例变量的指针。对象类型常见的有:NSlogNSStringNSIntegerNSURLNSImageNSNumberNSLog格式如下%对象%d,%i整数%u无符整形%f浮点/双字%x,%X二进制整数%zu size_t %p指针%e浮点/双字%g浮点/双字%s C字符串%*s Pascal字符串%c 字符%C unicha%lld 64位长整数(long long)%llu无符64位长整数%Lf 64位双字NSNumberNSNumber是Objective-c的数字对象。需求考虑内存释放问题。1 NSNumber *number = NSNumber numberWithInt:123;2 NSLog(%i,number intValue);3 NSLog(%i,number retainCount);/输出2010-12-29 16:02:35.040 HelloWorld4710:a0f 1232010-12-29 16:02:35.042 HelloWorld4710:a0f 1NSString和NSMutableStringNSString是不可变字符串(NSContantString),其变量和其本类型一样不需要手动释放(它的retainCount为-1)。NSString赋值:NSString*str1=str.;/(不需要手动释放) NSString*str2=NSStringallocinitWithString:str.;/不需要手动释放因为对NSString赋值,会产生成的对象,所在方法中用NSString作临时对象,也要考虑内存开消问题。NSMutableString是可变字符串,若用 “NSMutableStringallocinit.”方法初始化,需要考虑手动释放。1NSString*str=thisisstr.; 2NSMutableString*mstr=NSMutableStringstringWithString:str; 3str=sss; 4NSLog(%,mstr); 5NSLog(%,str);输出:1thisisstr. 2sss注:因为NSMutableString是NSString的子类,实际应用中很可以把NSMutableString变量赋给NSString。所以若用NSString做类的属性,也会用手动释放的方式:1/接口文件 2interfaceTestProperty:NSObject 3NSString*name; 4NSIntegermyInt; 5 6 7property(copy,nonatomic)NSString*name; 8propertyNSIntegermyInt; 9 10end1/实现类 2implementationTestProperty 3synthesizename; 4synthesizemyInt; 5 6-(void)dealloc 7=nil; 8superdealloc; 9 10 11end例:代码1intmain(intargc,constchar*argv) 2NSAutoreleasePool*pool=NSAutoreleasePoolallocinit; 3 4NSMutableString*str1=NSMutableStringstringWithString:thisisstr; 5NSMutableString*str2=NSMutableStringstringWithString:str1; 6str2appendString:sss; 7NSLog(%,str1); 8NSLog(%,str2); 9pooldrain; 10return0; 11 12 13/输出 142010-12-3011:43:13.511HelloWorld2119:a0fthisisstr 152010-12-3011:43:13.521HelloWorld2119:a0fthisisstrsss 16 17可以看出str2不是指向str1的,而是新的对象!NSArray和NSMutableArrayNSArray是不可变数组,一般用于保存固定数据。和NSString不同的是,NSArray有retainCount,所以释放问题。NSMubleArray是变数组,可以直接对其值进行操作。也可考虑释放问题。NSMubleArray是NSArray的子类。1NSArray*arr=NSArrayarrayWithObjects:Sep,Januay,nil; 2NSArray*arr_=arrsortedArrayUsingSelector:selector(compare:); 3NSLog(%i,arrretainCount); 4for(NSString*nameinarr_) 5NSLog(%,name); 6 7 8/输出 92010-12-2913:36:16.830HelloWorld3325:a0f1 102010-12-2913:36:16.833HelloWorld3325:a0fJanuay 112010-12-2913:36:16.833HelloWorld3325:a0fSep代码1NSMutableArray*arr=NSMutableArrayarrayWithObjects:Sep,Januay,nil; 2arrsortUsingSelector:selector(compare:); 3NSLog(%i,arrretainCount); 4for(NSString*nameinarr) 5NSLog(%,name); 6 7 8/输出 92010-12-2913:41:34.925HelloWorld3415:a0f1 102010-12-2913:41:34.928HelloWorld3415:a0fJanuay 112010-12-2913:41:34.930HelloWorld3415:a0fSepNSSet和NSMutableSetNSSet和NSMutableSet分别是不可变集合和可变集合。集合是一组单值的操作。NSSet和NSMutableSet都需要考虑释放问题。代码1 NSSet *set = NSSet setWithObjects:NSNumber numberWithInt:10,bb,aa,bb,aa,nil;2 for(id *obj in set)3 NSLog(%,obj);4 5 NSLog(%i,set count);6 NSLog(%i,set retainCount);/输出2010-12-29 13:56:08.397 HelloWorld3709:a0f 102010-12-29 13:56:08.400 HelloWorld3709:a0f aa2010-12-29 13:56:08.401 HelloWorld3709:a0f bb2010-12-29 13:56:08.401 HelloWorld3709:a0f 32010-12-29 13:56:08.402 HelloWorld3709:a0f 1NSDictionary和NSMutableDictionarydictionary是由键-对象对组成的数据集合。NSDictionay和NSMutableDicionary都需要考虑内存释放问题。代码1 NSDictionary *dict = NSDictionary2 dictionaryWithObjects:NSArray arrayWithObjects:val1,val2,nil3 forKeys:NSArray arrayWithObjects:key2,key1,nil;4 5 for(NSString *key in dict)6 NSLog(%,dict objectForKey:key);7 8 NSLog(%i,di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论