We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
通过NSArray和NSMutableArray接口,返回的却是子类对象:
NSArray
NSMutableArray
__NSArrayI
__NSSingleObjectArrayI
__NSArrayM
不可变数组,内容不可改变。无法进行增加,删除操作。
@[]
NSArray *arr4 = @[@1, @2, @"12"];
nil
initWithObjects
NSArray *arr = [NSArray arrayWithObjects:@1, @2, @3, nil, @4, nil];
变量arr的值是[@1, @2, @3],nil后面的值都被忽略了。
arr
[@1, @2, @3]
[nil count]是0。如果要判断数组是否是空数组可以直接这样:
[nil count]
if(arr.count) { // 不必 if(arr && arr.count) // 非空数组 }
可变数组,继承于NSArray,对NSArray进行了增删改的扩充。
nil不能作为数组元素
NSMutableArray *mArr = [NSMutableArray arrayWithObjects:@1, @2, nil]; // 异常:uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' [mArr addObject:nil];
The text was updated successfully, but these errors were encountered:
for
for in
enumerateObjectsUsingBlock
enumerateObjectsWithOptions
enumerateObjectsAtIndexes
objectEnumerator
reverseObjectEnumerator
遍历的方式有多种,每种方式都存在即合理。至于选择哪种遍历方式完全取决个人需求。如果多个方式都满足需求可以基于性能选择。
Sorry, something went wrong.
No branches or pull requests
OC数组的类体系
通过
NSArray
和NSMutableArray
接口,返回的却是子类对象:NSArray
对象时,实际上得到的是NSArray
的子类__NSArrayI
对象,只有一个对象的NSArray
时,得到的是__NSSingleObjectArrayI
类对象。NSMutableArray
对象,得到的同样是其子类__NSArrayM
对象。NSArray
不可变数组,内容不可改变。无法进行增加,删除操作。
基本语法
NSArray
,还可以用字面量@[]
方式创建NSArray
;NSArray *arr4 = @[@1, @2, @"12"];
nil
数组元素nil
不可以作为数组的元素。initWithObjects
里用nil
只是作为列表结束标记。变量
arr
的值是[@1, @2, @3]
,nil
后面的值都被忽略了。nil
数组[nil count]
是0。如果要判断数组是否是空数组可以直接这样:NSMutableArray
可变数组,继承于
NSArray
,对NSArray
进行了增删改的扩充。nil
nil
不能作为数组元素参考
The text was updated successfully, but these errors were encountered: