IOS 開(kāi)發(fā)之 NSMutableArray與NSArray 的區(qū)別
IOS 開(kāi)發(fā)之 NSMutableArray與NSArray 的區(qū)別
首先,來(lái)看下2者的區(qū)別:
NSArray and its subclass NSMutableArray manage collections of objects called arrays. NSArray creates static arrays, and NSMutableArray creates dynamic arrays.
NSMutableArray是NSArray的子類,NSArray建立靜態(tài)數(shù)組,而NSMutableArray則是動(dòng)態(tài)數(shù)組.換句話說(shuō),NSArray建立之后不可修改,而NSMutableArray則可以修改.
由于在ObjC中,簡(jiǎn)單的看下函數(shù)addObject,會(huì)發(fā)現(xiàn)數(shù)組的元素是id類型,也就是說(shuō)是指針.
- (void)addObject:(id)anObject
如此一來(lái)數(shù)組里就不能壓入NSUInteger,BOOL之類的非指針型數(shù)據(jù)了,要命吧..
那要壓入這些內(nèi)容怎么辦呢?對(duì),類型轉(zhuǎn)換,ObjC提供了NSNumber來(lái)給大家轉(zhuǎn)換用,NSNumber本身是個(gè)指針類型變量.
Inherits from NSValue : NSObject
來(lái)個(gè)簡(jiǎn)單的轉(zhuǎn)換例子:
NSUInteger count = 1; NSNumber *j = [NSNumber numberWithInt:count]; [ary addObject:j];
還算明了吧,就是用到這個(gè)值的時(shí)候又要轉(zhuǎn)換一次,...
昨天剛好又用到數(shù)組的亂序,在網(wǎng)上找了個(gè)Sample修改了下,代碼如下:
#pragma
mark -
#pragma
mark (NSMutableArray *)randArray:(NSMutableArray *)ary
-
(NSMutableArray *)randArray:(NSMutableArray *)ary{
NSMutableArray
*tmpAry = [NSMutableArray arrayWithArray:ary];
NSUInteger
count = [ary count];
for
(NSUInteger i = 0; i < count; ++i) {
int
nElements = count - i;
//
Seed the random number generator
srandom(time(NULL));
int
n = (random() % nElements) + i;
[tmpAry
exchangeObjectAtIndex:i withObjectAtIndex:n];
}
return
tmpAry;
}
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
iOS開(kāi)發(fā)筆記之鍵盤、靜態(tài)庫(kù)、動(dòng)畫和Crash定位
最近在學(xué)習(xí)iOS開(kāi)發(fā),進(jìn)行了一些實(shí)戰(zhàn),所以下面這篇文章主要給大家介紹了關(guān)于iOS開(kāi)發(fā)筆記之鍵盤、靜態(tài)庫(kù)、動(dòng)畫和Crash定位的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-04-04
IOS 靜態(tài)庫(kù)和Framework區(qū)別
這篇文章主要介紹了IOS 靜態(tài)庫(kù)和Framework區(qū)別的相關(guān)資料,這里對(duì)動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)做比較,選擇什么時(shí)候使用庫(kù)文件,需要的朋友可以參考下2016-12-12
iOS開(kāi)發(fā)之AssetsLibrary框架使用詳解
這篇文章主要介紹了iOS開(kāi)發(fā)之AssetsLibrary框架使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
替代pod update速度慢的lg_pod_plugin安裝使用詳解
這篇文章主要介紹了替代pod update速度慢lg_pod_plugin安裝使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
iOS應(yīng)用中UICollectionViewCell定制Button
這篇文章主要介紹了iOS應(yīng)用中UICollectionViewCell如何定制Button,設(shè)置每行顯示的按鈕的個(gè)數(shù),自定制按鈕的顯示樣式,感興趣的小伙伴們可以參考一下2016-08-08
iOS粒子路徑移動(dòng)效果 iOS實(shí)現(xiàn)QQ拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了iOS粒子路徑移動(dòng)效果,iOS實(shí)現(xiàn)QQ拖動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

