- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
NSArray的遍历(1.for 2.for in3.block)
学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)
NSArray的基本使用
一、本章笔记
一、数组的遍历
1.for
2.for in
3.block
- (void)enumerateObjectsUsingBlock:(void (NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
每取出一个元素 就会调用 一次block
每次调用 block 都会 将当前取出的元素 和 元素对应的索引传递给我们
obj 就是当前取出的元素 , idx就是当前元素对应的索引
stop 用于控制 什么时候 停止遍历
二、code
main.m
#pragma mark 02-NSArray遍历
#pragma mark 概念
/*
一、数组的遍历
1.for
2.for in
3.block
- (void)enumerateObjectsUsingBlock:(void (NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
每取出一个元素 就会调用 一次block
每次调用 block 都会 将当前取出的元素 和 元素对应的索引传递给我们
obj 就是当前取出的元素 , idx就是当前元素对应的索引
stop 用于控制 什么时候 停止遍历
*/
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#pragma mark - main函数
int main(int argc, const char * argv[])
{
NSArray *arr = [NSArray arrayWithObjects:@"lyh",@"hxm",@"lys", nil];
#pragma 1.常规遍历
for (int i = 0; i < arr.count; ++i) {
NSLog(@"arr[%i] = %@",i,arr[i]);
}
#pragma 2.forin遍历
// 如果OC数组 可以使用OC中的增强 for循环来遍历
// 逐个取出arr中的元素, 将取出的元素赋值给obj
// 注意 : obj的类型 可以根据数组中元素的类型来写, 不一定要写NSObject
// for (NSObject *obj in arr) {
for (NSString *obj in arr) {
NSLog(@"obj = %@",obj);
}
#pragma 3.使用迭代器 来遍历
// 每取出一个元素 就会调用 一次block
// 每次调用 block 都会 将当前取出的元素 和 元素对应的索引传递给我们
// obj 就是当前取出的元素 , idx就是当前元素对应的索引
// stop 用于控制 什么时候 停止遍历
[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (idx == 1) {
*stop = YES;
}
NSLog(@"obj = %@,index = %lu",obj,idx);
}];
return 0;
}