IOS 开发之 NSMutableArray与NSArray 的区别

发布时间 - 2026-01-11 03:05:03    点击率:

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  # 的区别  # NSMutableArray与NSArray  # 的比较  # iOS利用NSMutableAttributedString实现富文本的方法小结  # iOS 对NSMutableArray进行排序和过滤的实例  # 浅谈iOS中几个常用协议 NSCopying/NSMutableCopying  # NSMutable 对象的坑解决分析  # 是个  # 子类  # 如有  # 则是  # 希望能  # 又要  # 找了  # 就不能  # 还算  # 来个  # 谢谢大家  # 则可  # 疑问请  # 好又  # 在网上  # 组里  # 昨天  # 来给大家  # static  # return 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 require机制详解及实例代码  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Java遍历集合的三种方式  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel如何使用模型观察者?(Observer代码示例)  中国移动官方网站首页入口 中国移动官网网页登录  5种Android数据存储方式汇总  如何快速查询网站的真实建站时间?  如何用狗爹虚拟主机快速搭建网站?  如何选择PHP开源工具快速搭建网站?  Laravel如何记录自定义日志?(Log频道配置)  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  大型企业网站制作流程,做网站需要注册公司吗?  Laravel如何处理和验证JSON类型的数据库字段  LinuxShell函数封装方法_脚本复用设计思路【教程】  微信小程序 wx.uploadFile无法上传解决办法  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何撰写建站申请书?关键要点有哪些?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  如何确保FTP站点访问权限与数据传输安全?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  android nfc常用标签读取总结  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何快速搭建FTP站点实现文件共享?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  利用JavaScript实现拖拽改变元素大小  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  电商网站制作价格怎么算,网上拍卖流程以及规则?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Python高阶函数应用_函数作为参数说明【指导】  如何在建站之星绑定自定义域名?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)