欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS 开发之 NSMutableArray与NSArray 的区别

程序员文章站 2023-12-18 15:30:04
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;

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: