IOS学习笔记十九NSArray和NSMutableArray

1、NSArray

NSArray不可变集合,不能添加新元素和删除已有元素和替换元素

 

 

 

2、demo

Dog.h

#import <Foundation/Foundation.h>
#ifndef Dog_h
#define Dog_h@interface Dog : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) int age;
-(id)initWithName:(NSString *)name age:(int)age;
-(void)say:(NSString *)content;
@end
#endif /* Dog_h */

 

Dog.m

 

#import <Foundation/Foundation.h>
#import "Dog.h"@implementation Dog
@synthesize name;
@synthesize age;
-(id)initWithName:(NSString *)name age:(int)age
{if (self = [super init]){self.name = name;self.age = age;}return self;
}-(void)say:(NSString *)content
{NSLog(@"%@ say %@", name, content);
}-(BOOL)isEqual:(id)object
{if (object == self)return YES;if ([object class] == Dog.class){Dog *dog = (Dog *)object;return [self.name isEqualToString:dog.name] && (self.age == dog.age);}return NO;
}
@end

 

 

 

main.m

int main(int argc, char * argv[]) {@autoreleasepool {NSArray *array = [NSArray arrayWithObjects:@"chenyu", @"hello", @"word", @"god", nil];NSLog(@"first data id %@", [array objectAtIndex:0]);NSLog(@"first data id %@", [array objectAtIndex:1]);NSLog(@"first data id %@", [array lastObject]);NSLog(@"@hello is %ld", [array indexOfObject:@"hello"]);array = [array arrayByAddingObject:@"chenzixuan"];for (int i = 0; i < array.count; ++i){NSLog(@"%@", [array objectAtIndex:i]);}NSArray *arr = [NSArray arrayWithObjects:[[Dog alloc] initWithName:@"chen" age:1], [[Dog alloc] initWithName:@"chenyu" age:1], [[Dog alloc] initWithName:@"chengongyu" age:1], nil];Dog *d = [[Dog alloc] initWithName:@"chenyu" age:1];NSInteger pos = [arr indexOfObject:d];NSLog(@"index is %ld", pos);[arr makeObjectsPerformSelector:@selector(say:) withObject:@"拜拜"];NSString *str = @"hello";[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {NSLog(@"正在处理第%ld个元素:%@", idx, obj);}];}
}

 

 

 

3、结果

2018-07-15 21:17:44.447732+0800 cyTest[31047:9530812] first data id chenyu
2018-07-15 21:17:44.449642+0800 cyTest[31047:9530812] first data id hello
2018-07-15 21:17:44.450020+0800 cyTest[31047:9530812] first data id god
2018-07-15 21:17:44.450943+0800 cyTest[31047:9530812] @hello is 1
2018-07-15 21:17:44.451207+0800 cyTest[31047:9530812] chenyu
2018-07-15 21:17:44.451493+0800 cyTest[31047:9530812] hello
2018-07-15 21:17:44.451739+0800 cyTest[31047:9530812] word
2018-07-15 21:17:44.451986+0800 cyTest[31047:9530812] god
2018-07-15 21:17:44.452233+0800 cyTest[31047:9530812] chenzixuan
2018-07-15 21:17:44.453020+0800 cyTest[31047:9530812] index is 1
2018-07-15 21:17:44.453332+0800 cyTest[31047:9530812] chen say 拜拜
2018-07-15 21:17:44.453581+0800 cyTest[31047:9530812] chenyu say 拜拜
2018-07-15 21:17:44.453803+0800 cyTest[31047:9530812] chengongyu say 拜拜
2018-07-15 21:17:44.454188+0800 cyTest[31047:9530812] 正在处理第0个元素:chenyu
2018-07-15 21:17:44.454456+0800 cyTest[31047:9530812] 正在处理第1个元素:hello
2018-07-15 21:17:44.455253+0800 cyTest[31047:9530812] 正在处理第2个元素:word
2018-07-15 21:17:44.478747+0800 cyTest[31047:9530812] 正在处理第3个元素:god
2018-07-15 21:17:44.478861+0800 cyTest[31047:9530812] 正在处理第4个元素:chenzixuan

 

 

 

 

 

 

4、NSMutableArray

nsMutableArray可变数组,代表是一个集合元素可变的集合

一般有add开头、 remove开头、replace开头、sort开头的方法

 

 

 

 

 

5、测试Demo

        NSMutableArray *muArray = [NSMutableArray arrayWithObjects:@"chen", @"yu", @"hello", @"word", nil];[muArray addObject:@"123"];[muArray removeObject:@"yu"];[muArray replaceObjectAtIndex:1 withObject:@"xx"];for (id ob in muArray) {NSLog(@"ob is %@", ob);}

 

 

 

 

6、结果

2018-07-18 22:02:57.498997+0800 cyTest[31429:12701122] ob is chen
2018-07-18 22:02:57.600036+0800 cyTest[31429:12701122] ob is xx
2018-07-18 22:02:57.600599+0800 cyTest[31429:12701122] ob is word
2018-07-18 22:02:57.600824+0800 cyTest[31429:12701122] ob is 123

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centOS安装Mysql指南

centOS安装Mysql指南 说明&#xff1a;使用操作系统centOS6.4 32位系统&#xff1b;mysql:mysql-5.7.10-linux-glibc2.5-i686.tar.gz; 一、准备 下载mysql wget http://mirrors.sohu.com/mysql/mysql:mysql-5.7.10-linux-glibc2.5-i686.tar.gz 注&#xff1a;所有shell命令都以…

2016年:勒索病毒造成损失预估超过10亿美元

根据趋势科技公布的最新报告&#xff08;PDF&#xff09;&#xff0c;2016年是敲诈勒索软件频发的一年&#xff0c;同比增长752%&#xff0c;预测由Locky、Goldeneye等勒索病毒所造成的损失超过10亿美元。报告中同时指出企业和个人是勒索软件的重灾区&#xff0c;而且勒索病毒还…

python3.6字典有序_为什么从Python 3.6开始字典有序并效率更高

在Python 3.5&#xff08;含&#xff09;以前&#xff0c;字典是不能保证顺序的&#xff0c;键值对A先插入字典&#xff0c;键值对B后插入字典&#xff0c;但是当你打印字典的Keys列表时&#xff0c;你会发现B可能在A的前面。 但是从Python 3.6开始&#xff0c;字典是变成有顺序…

Linux的进程/线程间通信方式总结

2019独角兽企业重金招聘Python工程师标准>>> Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式&#xff1a;包括信号量(Semaphore), 消息队列(Me…

开源作者去世后,代码谁来继承?

文 | 肖滢出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)2008 年初&#xff0c;澳大利亚一对兄弟 Simon Zerner 和 Toby Zerner 开始了 esoTalk 的开发。不幸的是&#xff0c; esoTalk 尚处于 Alpha 阶段&#xff0c;主力开发人员哥哥 Simon 就在 2009 年年中去世。…

html 整数转换为小数,二进制如何四舍五入 十进制小数怎么转换为二进制小数?...

二进制是否有类似十进制中“四舍五入”的说法二进制转换成十进制保留小数部分是否要四舍五入&#xff0c;...应当采用“零舍一入”(相当于十进制数的“四舍五入”)。用38线译码器74ls138&#xff0c;实现3位二进制的四舍五入&#xff0c;38线译码器输入对应的110为十进制数6&am…

Android之popWindows底部弹出挡住了华为虚拟键盘问题

1、问题 使用popWindows的时候底部弹出遮挡华为虚拟键盘 2、解决办法 在调用下面代码之前 popupWindow.showAtLocation 加上如下的代码进行设置 popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

项目中使用CLR编程

1、创建自己的项目 2、右键“解决方案。。。”→添加→新建项目→C#→数据库→SQL Server项目,如下图所示: 3、选择操作数据库

SDN火爆!未来五年年复合增长率达98%

在如今的网络世界&#xff0c;软件定义网络SDN和网络功能虚拟化NFV成为了新的“宠儿”&#xff0c;特别是对于运营商来说&#xff0c;已经将它们视为面向未来转型的关键。因此已经有越来越多的运营商开始尝试引入SDN和NFV技术&#xff0c;尽管它们的标准还尚未完善。 最早采用S…

python桌面程序开发_程序员之路:python3+PyQt5+pycharm桌面GUI开发

先看效果&#xff1a;图 1 没错&#xff0c;学过C#的同学应该很熟悉这个界面&#xff0c;按钮风格和界面风格很相似&#xff0c;万万没想到&#xff0c;python也可以做出这样的界面&#xff0c;简直了&#xff01;&#xff08;图 1&#xff09; 正文开始 一、安装python 为啥要…

转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)

2019独角兽企业重金招聘Python工程师标准>>> ‍‍相关参考资料&#xff1a;MySQL 赋予用户权限命令的简单格式可概括为&#xff1a;grant 权限 on 数据库对象 to 用户一、grant 普通数据用户&#xff0c;查询、插入、更新、删除 数据库中所有表数据的权利。 grant s…

面试技巧与注意事项

1、面试中的基本礼仪 (1)一旦和用人单位约好面试时间后&#xff0c;一定要提前5-10分钟到达面试地点&#xff0c;以表示求职者的诚意&#xff0c;给对方以信任 感&#xff0c;同时也可调整自己的心态&#xff0c;作一些简单的仪表准备&#xff0c;以免仓促上阵&#xff0c;手忙…

kafka控制台模拟消费_Kafka 详解

kafka简介Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需…

Android之运行PopupWindow提示Unable to add window -- token null is not valid; is your activity running?

1、问题 在使用PopupWindow的时候,我们构建好了直接放在Activity的onCreate函数里面直接运行,提示这个错误 Unable to add window -- token null is not valid; is your activity running? 2、原因分析 popupWindow显示依赖activity,并且要等activity所有的生命周期方法…

android开发板出错,为开发板编译时出错是什么原因

我也是怎么办Arduino:1.8.4 (Windows 7), 开发板&#xff1a;"Arduino/Genuino Uno"C:\Program Files\Arduino\arduino-builder -dump-prefs -loggermachine -hardware C:\Program Files\Arduino\hardware -hardware C:\Users\Administrator\AppData\Local\Arduino15…

python在web可以开发吗_Python Web开发

参考原文 WSGI接口 WSGI&#xff08;Web Server Gateway Interface&#xff09;是一个接口&#xff0c;用来屏蔽底部的细节&#xff08;如TCP的建立连接&#xff0c;HTTP原始请求和响应格式等&#xff09;。WSGI接口定义非常简单&#xff0c;只需要Web开发者实现一个函数&#…

更新丨.NET 7 预览版2 中的 ASP.NET Core

点击上方蓝字 关注我们&#xff08;本文阅读时间&#xff1a;6分钟).NET 7 预览版2 现已推出&#xff0c;其中包括对 ASP.NET Core 的许多重大改进。以下是此预览版中新增内容的摘要&#xff1a;• 推断来自服务的 API 控制器操作参数&#xff1b;• SignalR 集线器方法的依赖注…

LoadRunner+Android模所器实现抓包并调试本地服务端

为了测试Android软件的服务端的功能&#xff0c;需要重现某些客户端操作&#xff0c;便于发现功能问题&#xff0c;性能问题。也方便客户端与本机服务端特别是服务端代码进行断点调试。这个时候需要对网络操作进行重现。loadRunner是hp公司开发的压力测试工具。功能比较强大&am…

Linux shell命令 cp 加上-f还是提示是否覆盖

这是由于环境变量中有 allias cpcp -i 为了去掉这个系统自带的别名&#xff0c;能够使用grep -r --include"*" "alias cp" /查找设置这个环境变量的脚本文件&#xff1a; 我的ubuntu机器上是&#xff1a; ./.bash_aliases:alias cpcp -i 于是我将./.bash_…

Android之让代码跑在主线程(无context上下文)的封装

1、问题 有一段代码需要跑在主线程里面&#xff0c;但是没有context上下文&#xff0c;一开始直接想到runOnUiThread,好像不行 runOnUiThread(new Runnable(){public void run(){//执行更新ui的操作} })&#xff1b; 2、解决办法 封装一个handler的单例类 import android.o…