Objective-C语法之数组对象的那些事儿(七)

[原创]Linux 802.11n CSI tool Monitor模式 Linux 802.11n CSI tool Monitor模式 使用AP模式的缺陷在于ping 命令速度比较慢,且不能精确控制发送的参数,比如接收的包数量是不可控的。Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。期间参考了博主沃一德的CSI Tool安装使用讲解,对他的工作表示感... 阅读详情
使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。而Objective-C语言可以在Array数组中放任意类型的数据,值得注意的是只能放指向这个对象的指针,如果直接放int ,char,double 等等,是不行的.



1.不可变数组对象

使用NSArray关键字创建一个不可变的数组,一旦初始化完毕后这个数组的元素是不可以在动态的添加与删除。
创建MyClass对象,将指向这个对象的指针也可以存入NSArray数组中,可见NSArray对象数组中可以储存任意对象的数据。

[array count] : 得到这个对象数组的长度。
[array objectAtIndex 0]: 传入数组脚标的id 得到数据对象。
[arrayWithObjects; ...] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必须使用nil。标志结束~


使用for循环遍历这个数组对象。

  1. #import <UIKit/UIKit.h>  
  2. #import "MyClass.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  6.     
  7.     //添加我们的测试代码  
  8.       
  9.       
  10.     //创建自定义类  
  11.     MyClass *myClass = [[MyClass alloc]init];  
  12.       
  13.     //创建一个不可变的数组  
  14.     NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇咔咔",myClass,nil];  
  15.     //得到数组的长度  
  16.     int count = [array count];  
  17.     //遍历这个数组  
  18.     for (int i = 0; i < count; i++) {  
  19.         NSLog(@"普通的遍历:i = %d 时的数组对象为: %@",i,[array objectAtIndex: i]);  
  20.     }  
  21.        
  22.       
  23.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  24.     [pool release];  
  25.     return retVal;  
  26. }  


















上面的for循环遍历方法比较普遍,但是效率不好,而且安全性不高。Objective-C 提供了一种快速枚举遍历方法,推荐大家都使用这种方法来遍历。

for(NSObject *object in array) : 遍历array这个数组,每一次循环将数组中的元素赋值给  *object ,实现循环遍历。



  1. #import <UIKit/UIKit.h>  
  2. #import "MyClass.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  6.     
  7.     //添加我们的测试代码  
  8.       
  9.       
  10.     //创建自定义类  
  11.     MyClass *myClass = [[MyClass alloc]init];  
  12.       
  13.     //创建一个不可变的数组  
  14.     NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇咔咔",myClass,nil];  
  15.       
  16.     //遍历这个数组  
  17.     for (NSObject *object in array) {  
  18.         NSLog(@"快速的遍历数组对象为: %@",object);  
  19.     }  
  20.        
  21.       
  22.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  23.     [pool release];  
  24.     return retVal;  
  25. }  










2.可变数组对象


[NSMutableArray arrayWithCapacity:10] :初始化可变数组对象的长度,如果后面代码继续添加数组超过长度10以后 NSMutableArray的长度会自动扩充,所以不用担心数组越界。
[array addObject:...] : 向可变数组尾部添加数据对象。
[array addObjectsFromArray:..] :向可变数组尾部添加一个数组对象。  *)#>];


  1. #import <UIKit/UIKit.h>  
  2. #import "MyClass.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  6.     
  7.     //添加我们的测试代码  
  8.       
  9.       
  10.     //创建自定义类  
  11.     MyClass *myClass = [[MyClass alloc]init];  
  12.       
  13.     //创建一个可变的数组长度为10  
  14.     NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];   
  15.        
  16.       
  17.     //向数组中动态的添加对象  
  18.     [array addObject:@"雨松"];  
  19.     [array addObject:@"MOMO"];  
  20.     [array addObject:@"小可爱"];  
  21.     [array addObject:@"哇咔咔"];  
  22.   
  23.     [array addObject:myClass];  
  24.       
  25.       
  26.       
  27.     for (NSObject * object in array)   
  28.     {  
  29.         NSLog(@"输出对象数组:%@", object);  
  30.     }  
  31.       
  32.       
  33.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  34.     [pool release];  
  35.     return retVal;  
  36. }  










[array insertObject:@"插入一只小老虎" atIndex:1] :向可变数组中插入一个字符串对象,并且设定它的位置脚标索引为 1。
[array insertObject:(NSArray *) atIndex:(NSIndexSet *)] : 向可变数组中插入一个数组对象,可以任意设置它的位置脚标索引。


  1. #import <UIKit/UIKit.h>  
  2. #import "MyClass.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  6.     
  7.     //添加我们的测试代码  
  8.       
  9.       
  10.     //创建自定义类  
  11.     MyClass *myClass = [[MyClass alloc]init];  
  12.       
  13.     //创建一个可变的数组长度为10  
  14.     NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];   
  15.        
  16.       
  17.     //向数组中动态的添加对象  
  18.     [array addObject:@"雨松"];  
  19.     [array addObject:@"MOMO"];  
  20.     [array addObject:@"小可爱"];  
  21.     [array addObject:@"哇咔咔"];  
  22.   
  23.     [array addObject:myClass];  
  24.       
  25.       
  26.     //向数组中插入  
  27.     [array insertObject:@"插入一只小老虎" atIndex:1];  
  28.       
  29.       
  30.     for (NSObject * object in array)   
  31.     {  
  32.         NSLog(@"输出对象数组:%@", object);  
  33.     }  
  34.       
  35.       
  36.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  37.     [pool release];  
  38.     return retVal;  
  39. }  









NSRange range = NSMakeRange(0,5); 设置一个范围为 0 到 5 之间。
[array removeObject:myClass inRange:range] : 设置在一个范围内删除数据,如果这个范围内没有删除的这个对象则不会删除任何东西。例子中因为myClass对象在 数组 0 到 5的范围内,所以myClass就被删除掉了。

[array removeObject:(id)] :无需考虑范围,主要数组中存在这个对象就会直接被删除。
[array removeObjectAtIndex:(NSUInteger)]:删除数组中指定脚标索引的数据。

[array removeObjectIdenticalTo:(id)] : 删除数组中指定元素
[array removeObjectIdenticalTo:(id) inRange:(NSRange)] : 在指定范围内删除指定的元素。

[array removeObjectsInArray:(NSArray *)] :删除一个数组的元素。


  1. #import <UIKit/UIKit.h>  
  2. #import "MyClass.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  6.     
  7.     //添加我们的测试代码  
  8.       
  9.       
  10.     //创建自定义类  
  11.     MyClass *myClass = [[MyClass alloc]init];  
  12.       
  13.     //创建一个可变的数组长度为10  
  14.     NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];   
  15.        
  16.       
  17.     //向数组中动态的添加对象  
  18.     [array addObject:@"雨松"];  
  19.     [array addObject:@"MOMO"];  
  20.     [array addObject:@"小可爱"];  
  21.     [array addObject:@"哇咔咔"];  
  22.   
  23.       
  24.     [array addObject:myClass];  
  25.       
  26.     //设置一个删除范围  
  27.     NSRange range=NSMakeRange(0,5);  
  28.     //删除元素  
  29.     [array removeObject:myClass inRange:range];  
  30.       
  31.       
  32.       
  33.     for (NSObject * object in array)   
  34.     {  
  35.         NSLog(@"输出对象数组:%@", object);  
  36.     }  
  37.       
  38.       
  39.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  40.     [pool release];  
  41.     return retVal;  
  42. }  









[array replaceObjectAtIndex 2 withObject:@"已经修改了"]:替换数组脚标为2的数据。


  1. #import <UIKit/UIKit.h>  
  2. #import "MyClass.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  6.     
  7.     //添加我们的测试代码  
  8.       
  9.       
  10.     //创建自定义类  
  11.     MyClass *myClass = [[MyClass alloc]init];  
  12.       
  13.     //创建一个可变的数组长度为10  
  14.     NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];   
  15.        
  16.       
  17.     //向数组中动态的添加对象  
  18.     [array addObject:@"雨松"];  
  19.     [array addObject:@"MOMO"];  
  20.     [array addObject:@"小可爱"];  
  21.     [array addObject:@"哇咔咔"];  
  22.   
  23.       
  24.     [array addObject:myClass];  
  25.       
  26.       
  27.     //修改脚标索引为2的元素  
  28.     [array replaceObjectAtIndex: 2 withObject:@"已经修改了"];  
  29.     for (NSObject * object in array)   
  30.     {  
  31.         NSLog(@"输出对象数组:%@", object);  
  32.     }  
  33.       
  34.       
  35.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  36.     [pool release];  
  37.     return retVal;  
  38. }  









感觉Objective-C 的对象数组真的很给力,善用数组对象处理数据也是个不错的选择噢 ,嘻嘻~~

22h2版本的win10安装Docker Desktop时页面空白 摘要:Windows10 22H2系统重装Docker时出现安装界面卡死问题,通过管理员CMD执行静默安装命令解决。命令指定了WSL-2后端及多个自定义数据存储路径(安装目录、Hyper-V数据、Windows容器数据、WSL数据),安装需等待几分钟。最终验证安装成功。 阅读详情

相关推荐

Rocky Linux 9 远程桌面配置全攻略:从零搭建XRDP服务(含防火墙设置)

本文提供了在Rocky Linux 9上从零开始配置XRDP远程桌面服务的完整指南。详细介绍了系统准备、XRDP服务安装、防火墙与SELinux安全设置、多用户性能优化以及多平台客户端连接实测。重点解决了使用Windows远程桌面协议(RDP)连接Rocky Linux时常见的配置难点与安全问题,帮助用户获得稳定高效的图形化远程访问体验。

vodka的博客 646

Objective-C语法之数组对象的那些事儿

使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。而Objective-C语言可以在Array数组中放任意类型的数据,值得注意的是只能放指向这个对象的指针,如果直接放int ,char,double 等等,是不行的. 1.不可变数组对象 使用NSArray关键字创建一个不可变的数组

焦雨晗 699

HFSS仿真3dB微带双分支定向耦合器学习笔记

设计一个3dB微带双分支定向耦合器,各端口微带线特性阻抗为50Ω,中心频率为5GHz,介质基板的介电常数9.6,基板厚度为0.8mm这里重点讲解HFSS的操作,关于理论知识后面文章更新。

qq_36521926的博客 7768

Objective-C语法之词典对象的那些事儿(八)

Objective-C语法之词典对象的那些事儿雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/421      做过Java语言或者 C语言开发的朋友应该很清楚关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objecti

雨松MOMO的程序世界专栏 8497

WinForm实战:如何用C#和PdfiumViewer打造一个功能齐全的PDF阅读器(含源码)

本文详细介绍了如何使用C#和PdfiumViewer库从零开始构建一个功能齐全的WinForm PDF阅读器。内容涵盖项目环境搭建、核心组件解析、基于命令模式的工具栏与UI架构设计,并深入讲解了智能缩放、页面导航、打印功能等核心交互的实现,以及内存管理和性能优化等高级话题,为开发者提供了一套完整的实战解决方案。

docker8compose的博客 503

Labwindows CVI写上位机与STM32下位机通信(二)

接着上篇,这篇主要谈谈流量计数据读取。我们使用的MEMS流量计采用Modbus协议Modbus 使用RS-485 作为硬件载体。 一. Modbus协议   该协议定义了 Modbus 总线Master(主设备)与Slave(从设备)之间的通讯报文格式,对于主设备来说,Modbus 协议是联系上位机(如PC、PLC、HMI 等)的接口,而且所有的通讯都是“透明的”。控制器通信使用主-从技术,即

yang2011079080010的专栏 1万+

Objective-C语法之常用数据的那些事儿(二)

Objective-C语法之常用数据结构雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/585由于工作重心发生了改变,Android开发暂时不会继续投入经历。MOMO最近在自学IOS游戏开发 哇咔咔~~目前还在学习阶段此篇文章主要用于备忘,欢迎各位大牛们给我多多虐虐我 互相学习~哇咔咔

雨松MOMO的程序世界专栏 9135

企业信息化系统的组成模块-核心业务系统

通过标准化的数据流形成完整的业务闭环,CRM生成的销售订单驱动ERP的生产和采购,ERP将生产计划传递给MES执行,MES报工数据返回ERP进行成本核算,ERP再将交付信息同步给CRM供客户查询。生产管理确保高效交付,缩短订单周期。某贸易公司实施ERP供应链模块后,库存周转率从每年4次提升到8次,库存资金占用从2000万降到1200万,释放800万现金流,同时缺货率从15%降到5%。│ │库存 │ │ MRP │ │ ERP │ │ 云ERP/ │ │。

weiyvyy的博客 694

Objective-C语法的那些事儿(十篇文章,大家一起来学习)

Objective-C 基础语法log打印那些事儿(一) http://www.1000phone.net/thread-7292-1-1.html Objective-C语法之常用数据的那些事儿(二)  http://www.1000phone.net/thread-7293-1-1.html Objective-C语法之NSString字符串的那些事儿(三) http://ww

tj8246965的专栏 215

qPCR定量方法在肠道微生物特定种属定量应用

大家都知道肠道中有上千种细菌,肠道微生物可参与人体代谢,促进营养物质的消化吸收,肠道微生态均衡关系到身体健康,肠道微生态失衡可能会导致疾病产生。此外有文献指出肠道微生物可能与人体免疫及炎性反应等有关。目前也越来越多人关注到疾病与肠道微生物的关系,也做了很多研究及实验,一般高通量结果得到的是每个物种在样本中的相对百分含量,而不同微生物的绝对含量其实也对疾病有很重要的影响。在此分享几篇有采用qPCR方法研究疾病与肠道微生物关系的文章。 早在2013年Kim-Anne Lê1、Yan Li等人发表文章Alter

tinygene的博客 2143

【Bug已解决】This model‘s maximum context length is X tokens. However, you requested Y tokens 解决方案

summary_prompt = "请将以下对话历史压缩成一段简洁摘要,保留关键决策和结论:\n" + format_messages(old_part)return [{"role": "system", "content": f"此前对话摘要:{summary}"}] + recent_part这种方式能在大幅降低 token 消耗的同时,尽量保留任务推进所需的关键上下文,是目前业内做长会话 Agent 最常见的处理方式之一。方案适用场景推荐指数滑动窗口裁剪短任务,对早期历史依赖不强⭐⭐⭐。

一键难忘的博客 1万+

Objective-C语法之NSString字符串的那些事儿(三)

Objective-C语法之字符串那些事雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/381Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改

雨松MOMO的程序世界专栏 2万+

项目报告:基于Sentaurus TCAD的多沟道长度NMOS器件仿真、SPICE模型提取与环形振荡器电路验证

本项目基于Sentaurus TCAD工具,完成了从器件仿真到电路验证的全流程研究。首先构建了45nm、65nm和90nm三种沟道长度的NMOS器件,通过TCAD仿真分析了其电学特性,观察到明显的短沟道效应。随后提取了BSIM4 SPICE模型参数,并生成Hspice可用的模型文件。最后利用该模型设计了11级环形振荡器进行电路验证,证明了模型的实用性。研究结果表明,随着沟道长度缩短,器件性能虽有所提升,但短沟道效应导致关态电流显著增加,影响整体能效。本项目为纳米尺度MOSFET的建模与电路设计提供了完整的技

huanghm88的专栏 284

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 58

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Objective-C语法之词典对象的那些事儿(八)
下一篇: Objective-C语法之static关键字的那些事儿(六)
vrix
博客等级 码龄24年 673粉丝 167原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值