IOS 开发之 NSMutableArray与NSArray 的区别
程序员文章站
2023-12-20 21:14:58
ios 开发之 nsmutablearray与nsarray 的区别
首先,来看下2者的区别:
nsarray and its subclass nsmutab...
ios 开发之 nsmutablearray与nsarray 的区别
首先,来看下2者的区别:
nsarray and its subclass nsmutablearray manage collections of objects called arrays. nsarray creates static arrays, and nsmutablearray creates dynamic arrays.
nsmutablearray是nsarray的子类,nsarray建立静态数组,而nsmutablearray则是动态数组.换句话说,nsarray建立之后不可修改,而nsmutablearray则可以修改.
由于在objc中,简单的看下函数addobject,会发现数组的元素是id类型,也就是说是指针.
- (void)addobject:(id)anobject
如此一来数组里就不能压入nsuinteger,bool之类的非指针型数据了,要命吧..
那要压入这些内容怎么办呢?对,类型转换,objc提供了nsnumber来给大家转换用,nsnumber本身是个指针类型变量.
inherits from nsvalue : nsobject
来个简单的转换例子:
nsuinteger count = 1; nsnumber *j = [nsnumber numberwithint:count]; [ary addobject:j];
还算明了吧,就是用到这个值的时候又要转换一次,...
昨天刚好又用到数组的乱序,在网上找了个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; }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读
-
IOS 开发之 NSMutableArray与NSArray 的区别
-
iOS开发之Quartz2D的介绍与使用详解
-
Android开发之资源目录assets与res/raw的区别分析
-
iOS开发之获取系统相册中的图片与视频教程(内带url转换)
-
IOS 开发之 NSMutableArray与NSArray 的区别
-
Android开发笔记之:Handler Runnable与Thread的区别详解
-
Android开发笔记之:Handler Runnable与Thread的区别详解
-
IOS开发(49)之关于 self与内存相关的用法总结
-
IOS开发(45)之delegate和Notification的区别
-
IOS开发(87)之Strong与Weak的理解