1.NSArray的基本概念

  • 什么是NSArray?

    • NSArray是OC中的数组类,开发中建议尽量使用NSArray替代C语言中的数组
    • C语言中数组的弊端
      • int array[4] = {10, 89, 27, 76};
      • 只能存放一种类型的数据.(类型必须一致)
      • 不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)
  • NSArray的使用注意

    • 只能存放任意OC对象, 并且是有顺序的
    • 不能存储非OC对象, 比如int\float\double\char\enum\struct等
    • 它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素

2.NSArray的创建方式

  • + (instancetype)array;
  • + (instancetype)arrayWithObject:(id)anObject;
  • + (instancetype)arrayWithObjects:(id)firstObj, ...;
  • + (instancetype)arrayWithArray:(NSArray *)array;

  • + (id)arrayWithContentsOfFile:(NSString *)path;

  • + (id)arrayWithContentsOfURL:(NSURL *)url;

3.NSArray 的使用注意事项

  • NSArray使用NSLog()输出内容,内容是小括号的格式。

  • NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。

NSArray *arr = [NSArray arrayWithObjects:@"lnj", nil ,@"lmj",@"jjj", nil];
NSLog(@"%@", arr);
输出结果:
(
lnj
)

4.NSArray的常用方法

  • - (NSUInteger)count;

    • 获取集合元素个数
  • - (id)objectAtIndex:(NSUInteger)index;

    • 获得index位置的元素
  • - (BOOL)containsObject:(id)anObject;

    • 是否包含某一个元素
  • - (id)lastObject;

    • 返回最后一个元素
  • - (id)firstObject;

    • 返回最后一个元素
  • - (NSUInteger)indexOfObject:(id)anObject;

    • 查找anObject元素在数组中的位置(如果找不到,返回-1)
  • - (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;

    • 在range范围内查找anObject元素在数组中的位置

5.NSArray的简写形式

  • 自从2012年开始, Xcode的编译器多了很多自动生成代码的功能, 使得OC代码更加精简

  • 数组的创建

    • 之前

      [NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];
    • 现在
      @[@"Jack", @"Rose", @"Jim"];
  • 数组元素的访问

    • 之前

      [array objectAtIndex:0];
    • 现在
      array[0];

NSArray基本概念的更多相关文章

  1. OC基础(23)

    NSArray基本概念 NSArray 遍历 NSArray排序 NSArray文件读写 NSArray 与字符串 *:first-child { margin-top: 0 !important; ...

  2. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  3. CCArray(转)

    http://blog.csdn.net/passtome/article/details/7966451 CCArray也是cocos2d-x自己写的类.它相当于是objc的NSArray.在coc ...

  4. CCArray

    CCArray也是cocos2d-x自己写的类.它相当于是objc的NSArray.在cocos2d-x中是没有NSArray的概念的(NSArray和NSMutableArray的唯一区别就是一个不 ...

  5. OC-基础数据类型

    七 字符串与基本数据类型转换 获取字符串的每个字符/字符串和其他数据类型转换 八 NSMutableString 基本概念/常用方法 九 NSArray NSArray基本概念/创建方式/注意事项/常 ...

  6. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  7. Objective-C关键字和概念

    Objective-C关键字和概念 @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementati ...

  8. iOS-分段控制器-基本概念

    可以直接复制使用 #import "FirstViewController.h" #import "Masonry.h" @interface FirstVie ...

  9. [转]一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

随机推荐

  1. 教你10分钟对接人大金仓EF Core 6.x

    前言 目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql.SqlSugar(排名不分先后).FreeSql和SqlS ...

  2. 很漂亮的一个背景控件——ribbons.js

    写博客的人都喜欢优化自己的博客主页,博主也一样,找了一些背景控件,像canvas-nest.js等等,最终选择了ribbons.js,并基于源码,稍作了一丁点的修改,这里分享出来 (function ...

  3. 【优雅代码】07-spring下的优秀工具类

    [优雅代码]07-spring下的优秀工具类 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点 ...

  4. Dom 键盘事件以及实战案例

    键盘事件 //键盘操作 //1.某键盘按下执行的操作 document是对文档进行触发 document.onkeyup = function(){ console.log('你好') } docum ...

  5. CSS 表格基本使用 案例

    知识点普及: 表格是html中经常使用到的,简单的使用可能很多人都没问题,但是更深入的了解的人恐怕不多,下面我们先来看一下如何使用. <table>是<tr>的上层标签 < ...

  6. 详谈 Java工厂 ---工厂方法模式

    1.前言 有个场景,消费者需要付钱,有可能是使用支付宝.微信.银行卡,那么该怎么选择呢? 是不是想到了使用用if else判断?还是使用switch? 一个地方这样写还好,如果有很多这样的业务,难道都 ...

  7. 编写程序向HBase添加日志信息

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) 承接上一篇文档<日志信息和浏览器信息获取及数据过滤> 上一个文档最好做个本地测试 ...

  8. 【小记录】android命令行程序发生coredump后读取堆栈信息

    一开始执行: adb shell cd /data/local/tmp ulimit -c unlimited ./xxx 然后查看coredump文件信息: adb pull /data/local ...

  9. 前端vue-TinyMCE富文本编辑器表情插件报错解决

    最近项目中需要使用文本编辑器,比较了下最终选择了TinyMCE这款富文本编辑器.我安装的是TinyMCE v5但是在使用表情插件的时候,表情一直都出不来,报错信息如下: Uncaught Syntax ...

  10. 基于 esbuild 的 universal bundler 设计

    --字节跳动前端 Byte FE :杨健 背景 由于 Lynx(公司自研跨端框架)编译工具和传统 Web 编译工具链有较大的差别(如不支持动态 style 和动态 script 基本告别了 bundl ...