IOS之Objective-C学习笔记(六)

IOS之Objective-C学习笔记(六),第1张

概述       今天继续记录我的学习过程,现在开始: 1.NSArray:是一个Cocoa类,用来存储对象的有序列表,你可以在NSArray中放入任意类型的对象:NSString,Car,Shape,Tire或者其他对象。不过值得注意的是,它有两个       限制,首先它只能存储Objective-C的对象,而不能存储C语言的基本类型数据,如int,float,enum,struct,或者NSAr

       今天继续记录我的学习过程,现在开始:

1.NSArray:是一个Cocoa类,用来存储对象的有序列表,你可以在NSArray中放入任意类型的对象:Nsstring,Car,Shape,Tire或者其他对象。不过值得注意的是,它有两个       限制,首先它只能存储Objective-C的对象,而不能存储C语言的基本类型数据,如int,float,enum,struct,或者NSArray中的随机指针。同时也不能存储nil。     

[plain] view plaincopy   (1)类方法arrayWithObjects ,创建一个新的NSArray:                 NSArray  *array;                 array  =  [ NSArray  arrayWithObjects : @"one", @"two", @"three", nil ];     (2)-(unsigned) count 获得数组所包含的对象个数           -(ID) objectAtIndex : (unsigned  int ) index 获得特定引索处的对象                 int  i ;                 for ( i = 0; i < [ array count ]; i++){                       NSLog (@"index %d has %@ ,", i , [ array objectAtIndex : i ] );                 }//输出index 0 has one, index 1 has two, index 2 has three,在引索越界会报错!  


2.可变数组NSMutableArray :     

copy  (1)+(ID) arrayWithCapacity : (unsigned) numitems,创建新的可变数组:                NSMutableArray  *array;                array = [ NSMutableArray arrayWithCapacity : 17 ;]    (2)-(voID) addobject : (ID) anObject在数组末尾添加对象;    (3)-(voID) removeObectAtIndex : (unsigned) index,可以通过它删除特定引索处的对象:                [ array  removeObjectAtIndex : 1 ];//值得注意的删除了这个特定引索的对象时,数组中并没有留下漏洞,被删除对象后面的数组元素都被前移来填补空缺了。  

               

3.枚举NSEnumerator:

copy  (1)-(NSEnumerator *) objectEnumerator 通过它可以向数组请求枚举器:               NSEnumerator *enumerator;                enumerator = [ array objectEnumerator];               //如果想从后向前浏览集合,还有一个方法reverSEObjectEnumerator可以使用    (2)-(ID) nextObject: 向枚举器请求它的下一个对象:                NSEnumerator *enumerator;                enumerator = [ array objectEnumerator];                ID  thingIE;                while (thingIE  =  [ enumerator  nextObject ]){                             NSLog (@" I found %@" , thingIE);                }//需要注意的是,对可变数组进行枚举 *** 作时,有一点需要注意,你不能通过添加或删除对象这类方式来改变数组容器。     (3)快速枚举:                for (Nsstring  *string in array){                        NSLog (@"I found %@ ", string);                }//这个循环体将会遍历数组的每个元素,并用变量string存储每个数组值,它比枚举器语法更为简洁。  


4.NSDictionary字典,它在给定一个关键字下存储一个数值,然你可以通过这个关键字来查找相应的数值。       

copy  (1)+( ID )dictionaryWithObjectAndKeys:                           ( ID )firstObject , .......; 该方法接受对象和关键字交替存储的系列,以nil值作为终止符号。                 创建存储轮胎的字典例子:                 NSDictionary  *tires;                 [ tires setobject : t1  forKey : @"front-@R_404_6823@"];                 [ tires setobject : t2  forKey : @"front-right"];                 [ tires setobject : t3  forKey : @"back-@R_404_6823@"];                 [ tires setobject : t4  forKey : @"back-right"];//如果对字典中已有的关键字使用setobject :forKey:,             那么这个方法将会用新值替换原有数值.     (2)-(ID)objectForKey : (ID) aKey;通过键值获取字典中对应的值                   Tire  *tire = [ tires objectForKey : @"back-right" ];  @H_551_404@  (3)@H_551_404@+(ID)dictionaryWithCapacity : (unsigned int) numitems;创建可变字典     (4)-(voID)removeObjectForKey : (ID)aKey;通过键值删除对应值                 [ tires  removeObjectForKey : @"back-@R_404_6823@"];  


5.在使用Nsstring,NSArray,NSDictionary的时候,注意不要试图去创建它们的子类。

6.NSNumber 用来包装类用的:           

copy  (1)+(NSNumber *)numberWithChar : (char)value;    (2)+(NSNumber *)numberWithInt : (int)value;    (3)+(NSNumber *)numberWithfloat : (float)value;    (4)+(NSNumber *)numberWithBool : (BOol)value;//除了这些还有很多,这些是比较常用的,通过创建NSNumber后,可以把它放   入一个字典和数组中              NSNumber *number;              number = [ NSNumber numberWith : 42];              [ array addobject : number ];//加进数组里              [ dictionary  setobect : number   forKey : @"Bork"];//加入字典里             通过以下方法可以重获得它:                -(char) charValue;                -(int) intValue;                -(float) floatValue;                -(BOol)boolValue;                -(Nsstring *)stringValue;              此外,可以用nuberWithfloat::创建的NSNumber可以用intValue来提取数值,NSNumber会对数据进行适当的转换。  


7.NSValue,它是NSNumber的父类,它可以包装任何值,可以用它来装结构体。

copy  (1) *(NSValue *)valueWithBytes :(const voID *)value                          objCType : (const char *)type; 创建新的NSValue,参数一时你想要包装的数值地址。               例子:NSRect  rect = NSMakeRect(1,2,30,40);                    NSValue * value;                    value = [NSValue valueWithBytes :&rect                    objCType : @encode(NSRect)]; //@encode编译器指令可以接受数据的名称并为你生成合适的字符串                       [ array addobject : value ];     (2)-(voID)getValue : (voID *) value;提取数值,例子:                   value = [array objectAtIndex : 0];                    [ value getValue : &rect ];//传递的是要存储这个数值的变量地址     (3)Cocoa提供饿将常用的strcut类型数据转换成NSValue的便捷方法:                    +(NSValue *)valueWithPoint : (NSPoint) point;                    +(NSValue *)valueWithSize : (NSSize)size;                    +(NSValue *)valueWithRect : (NSRect)rect;                    -(NSPoint)pointValue;                    -(NSSize)sizeValue;                    -(NSRect)rectValue;//一下例子,在NSArray中存储和检索NSRect:                     value = [ NSValue valueWithRect : rect ];                     [ array addobject : value ];                     NSRect  anotherRect = [ value rectValue ];  


8.NSNull类:只有一个方法:+(NSNull *)null;例子:[ contact setobject : [ NSNull null ]   forKey : @"home fax machine" ];

9.总结浏览集合的三种方式:(1)用数组的引索遍历(2)用枚举器(3)用快速枚举

        好了,今天就写到这里,后面继续会有更新~转载请注明:http://blog.csdn.net/yuzhiboyi

总结

以上是内存溢出为你收集整理的IOS之Objective-C学习笔记(六)全部内容,希望文章能够帮你解决IOS之Objective-C学习笔记(六)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1057851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存