ios nsmutablearray数组为空,firstobject会不会出错

 我来答
寒气袭人ht
2016-07-20 · TA获得超过586个赞
知道小有建树答主
回答量:341
采纳率:0%
帮助的人:282万
展开全部
NSArray and its subclass NSMutableArray manage ordered collections of objects called arrays.
NSArray creates static arrays, and NSMutableArray creates dynamic arrays.
You can use arrays when you need an ordered collection of objects.

NSArray 用于保存对象的有序集合,但只能保存 OC 对象(继承自 NSObject 的 interface)。由于 Objective-C++ 是动态定型(dynamically typed),继承自NSObject 的 interface type cannot be statically allocated。因此 NSArray 本质上保存的是id,即 NSObject* 泛型指针。最新版 SDK 头文件已将数组元素声明为支持 <ObjectType> 协议的类型,数组作为参数则声明为 NSArray<ObjectType>。

Cocoa 的 NSArray 是基于 C 底层 CFArray/CFArrayRef 实现的,NSArray 可以看做是一个 CFArrayRef 的 Wrapper类。
__NSArrayI(Immutable)是NSArray的真正类型(_internal),__NSArrayM(Mutable)是NSMutableArray的真正类型(_internal)。

[objc] view plain copy print?
@interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
@interface NSMutableArray<ObjectType> : NSArray<ObjectType>

C 原生数据类型(Native Data Type: int,char,double,etc)不能直接作为 NSArray 元素,它们必须通过装箱(boxing)成 NSNumber、NSString 或 NSValue 等 OC 对象才能纳入 OC 数组存储。

在苹果 WWDC2012 大会上介绍了大量 Objective-C 的新特性,其中有一点就是Objective-C Literals(参考1、2、3),它允许你在XCode 4.4/LLVM Compiler 4.0/iOS 6及以上平台方便地基于字面量定义数字、数组和字典常量对象。

[plain] view plain copy print?
Three new features were introduced into clang at the same time:
- NSNumber Literals provide a syntax for creating NSNumber from scalar literal expressions;
- Collection Literals provide a short-hand for creating arrays and dictionaries;
- Object Subscripting provides a way to use subscripting with Objective-C objects.

Users of Apple compiler releases can use these features starting with the Apple LLVM Compiler 4.0.
Users of open-source LLVM.org compiler releases can use these features starting with clang v3.1.

APPLE LLVM CLANG 前端(参考LLVM 之 Clang、LLVM 与 Clang)支持字面语法,它使用简化符号 @ 声明编译器指令来定义对象,类似 java5 提供的 auto boxing 功能。这虽然是一个语法糖,但对提高写代码效率帮助很大。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式