IOS 開發(fā)之 NSMutableArray與NSArray 的區(qū)別
IOS 開發(fā)之 NSMutableArray與NSArray 的區(qū)別
首先,來看下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則是動態(tài)數(shù)組.換句話說,NSArray建立之后不可修改,而NSMutableArray則可以修改.
由于在ObjC中,簡單的看下函數(shù)addObject,會發(fā)現(xiàn)數(shù)組的元素是id類型,也就是說是指針.
- (void)addObject:(id)anObject
如此一來數(shù)組里就不能壓入NSUInteger,BOOL之類的非指針型數(shù)據(jù)了,要命吧..
那要壓入這些內(nèi)容怎么辦呢?對,類型轉(zhuǎn)換,ObjC提供了NSNumber來給大家轉(zhuǎn)換用,NSNumber本身是個指針類型變量.
Inherits from NSValue : NSObject
來個簡單的轉(zhuǎn)換例子:
NSUInteger count = 1; NSNumber *j = [NSNumber numberWithInt:count]; [ary addObject:j];
還算明了吧,就是用到這個值的時候又要轉(zhuǎn)換一次,...
昨天剛好又用到數(shù)組的亂序,在網(wǎng)上找了個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;
}
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
iOS開發(fā)中UITabBarController的使用示例
這篇文章主要介紹了iOS開發(fā)中UITabBarController的使用示例,代碼基于Objective-C進行演示,需要的朋友可以參考下2015-09-09
iOS的XMPPFramework簡單介紹(實現(xiàn)及時通信)
這篇文章主要介紹了iOS的XMPPFramework簡單介紹(實現(xiàn)及時通信),實現(xiàn)了基于XMPP協(xié)議通信的開發(fā),有需要的朋友可以了解一下。2016-11-11

