日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Object C学习笔记11-数组

發(fā)布時(shí)間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Object C学习笔记11-数组 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

  在Object C也提供了類似C#中的Array數(shù)組對(duì)象,在Object C中使用NSArray 來(lái)創(chuàng)建數(shù)組;但是在Object C中NSArray 只能存放對(duì)象類型的指針,不能存放int,char,double等基本數(shù)據(jù)類型。

  一. 不可變數(shù)組對(duì)象

    這個(gè)和之前的NSString有些類似,NSArray 能夠創(chuàng)建不可變的數(shù)組對(duì)象。一旦初始化這個(gè)對(duì)象就不能動(dòng)態(tài)的修改和增加這個(gè)數(shù)組。

    (1)使用arrayWithObjects來(lái)初始化數(shù)組內(nèi)容,參考如下代碼:

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf"];

    上面初始化了一個(gè)items數(shù)組對(duì)象,但是值得注意的是,這段代碼會(huì)報(bào)錯(cuò),在Object C中數(shù)組對(duì)象的創(chuàng)建有個(gè)特殊的地方,就是最后一個(gè)元素必須是nil,這意味著使用nil來(lái)標(biāo)識(shí)數(shù)組對(duì)象的結(jié)束。正確的方式如下:

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil];

    (2)可以使用count方法來(lái)獲取數(shù)組的長(zhǎng)度

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil]; NSLog(@"%d",[items count]);

    以上代碼得到的值是2,還是3呢,一般人都會(huì)認(rèn)為是3,但是這個(gè)數(shù)組的長(zhǎng)度是2,上面已經(jīng)提過(guò)了nil只是作為一個(gè)結(jié)束標(biāo)識(shí)符,并不能代表素組內(nèi)容。現(xiàn)在修改代碼如下:

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil,nil]; NSLog(@"%d",[items count]);

    得到的數(shù)組長(zhǎng)度仍然為2,在第一個(gè)nil的位置就已經(jīng)標(biāo)識(shí)數(shù)組結(jié)束了,所以后面出現(xiàn)再多的數(shù)組元素都沒(méi)有作用。

    (3)使用objectAtIndex來(lái)獲取某個(gè)索引位置的數(shù)組元素

NSLog(@"%@",[items objectAtIndex:0]);

    以上代碼可以獲得素組對(duì)象items索引位置為0的元素,但是一定要注意數(shù)組的長(zhǎng)度,否則數(shù)組越界異常。

    (4)使用for來(lái)遍歷數(shù)組元素

for(int i=0;i<[items count];i++){NSLog(@"%@",[items objectAtIndex:i]); }

    以上代碼和我們平時(shí)使用遍歷數(shù)組的方式無(wú)異,基本都是這種情況。但是for還有另外一種使用方式,和C#中的foreach使用方式一樣。

for(NSObject *item in items){NSLog(@"%@",item); }

  

  二. 動(dòng)態(tài)數(shù)組

    (1)根據(jù)上面所描述的,大致可以猜得出來(lái)動(dòng)態(tài)數(shù)組類,和NSMutableString比較類似。我們使用NSMutableArray來(lái)定義一個(gè)動(dòng)態(tài)數(shù)組。而且NSMutableArray 還提供了一些方法動(dòng)態(tài)像數(shù)組中添加元素,在NSMutableArray不用擔(dān)心在添加元素的時(shí)候發(fā)生數(shù)組越界的問(wèn)題,當(dāng)NSMutableArray長(zhǎng)度被占滿之后會(huì)自動(dòng)擴(kuò)容。

NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:2];

    我們使用arrayWithCapacity來(lái)定義一個(gè)數(shù)組的容量。

    (2)可以使用addObject方法來(lái)向?qū)ο髷?shù)組中添加元素,而且NSMutableArray和NSArray不一樣,不需要使用nil來(lái)介紹標(biāo)識(shí)數(shù)組結(jié)束。NSMutableArray中同樣提供了count 方法來(lái)獲取數(shù)組的長(zhǎng)度,這里需要注意的是count和capacity 是不一樣的,count是獲取的實(shí)際長(zhǎng)度,而capacity是可存放的長(zhǎng)度。

NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:12]; [mutItems addObject:@"abc"]; [mutItems addObject:@"def"]; NSLog(@"%d",[mutItems count]);

    如果往muItems中繼續(xù)添加元素,直到超過(guò)12個(gè),muItems也不會(huì)報(bào)錯(cuò),而且count也會(huì)大于12,這也是NSMutableArray的優(yōu)勢(shì)所在。

    (3)使用insertObject 在特定的位置添加元素

NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:2];[mutItems addObject:@"abc"];[mutItems addObject:@"def"];[mutItems addObject:@"45454"];NSLog(@"%d",[mutItems count]);[mutItems insertObject:@"wang" atIndex:1];for (NSString *item in mutItems) {NSLog(@"%@",item);} 案例

    (4)刪除數(shù)組中的元素

    - (void)removeObject:(id)anObject inRange:(NSRange)range;設(shè)置在一定范圍內(nèi)刪除,如果在這個(gè)范圍內(nèi)沒(méi)有匹配的元素則什么都不刪除。

    - (void)removeObject:(id)anObject;刪除指定元素

    - (void)removeObjectsInArray:(NSArray *)otherArray;刪除數(shù)組中指定的元素

    - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;刪除指定索引位置的元素

NSRange range=NSMakeRange(0, 2); [mutItems removeObject:@"wang" inRange:range]; for (NSString *item in mutItems) {NSLog(@"----- %@",item); }

    (5)替換數(shù)組元素內(nèi)容

    - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 可以使用這個(gè)方法來(lái)替換某個(gè)索引位置的元素

[mutItems replaceObjectAtIndex:1 withObject:@"FFFFFFFFFFFFFF"];for(NSString *item in mutItems){NSLog(@"************ %@",item);}

    

  本文只是很初略的記錄了學(xué)習(xí)的一些常用方法,NSArray和NSMutableArray 還提供了大量的其他方法,仍有待繼續(xù)努力學(xué)習(xí)和使用!        

總結(jié)

以上是生活随笔為你收集整理的Object C学习笔记11-数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。