OC-040.NSArray的遍历方式

遍历方式一般分为以下4种:

1.通过for循环

2.通过增强for

3.通过block封装代码

4.通过枚举器


让数组里面的对象都执行相同方法(类似for循环,但是效率要高于for):

1.[Objest makeObjectsPerformSelector:(nonnull SEL) ];

第一种方法是无参数的

2.[Objest makeObjectsPerformSelector:(nonnull SEL) withObject:(nullable id)]

让数组中的每个元素 都调用某个方法 并把withObject后边的对象做为参数传给方法SEL,如果是数据类型需要转乘NSNumber或者NSString

#import <Foundation/Foundation.h>//------main.m
#import "LSDog.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        LSDog *dog1 = [[LSDog alloc] init];
        dog1.name = @"dog1";
        dog1.age = 1;
        LSDog *dog2 = [[LSDog alloc] init];
        dog2.name = @"dog2";
        dog2.age = 2;
        LSDog *dog3 = [[LSDog alloc] init];
        dog3.name = @"dog3";
        dog3.age = 3;
        
        NSArray *dogs = @[dog1,dog2,dog3];
        //1.for循环的方法遍历数组
        long count = dogs.count;
        for (int i = 0; i < count; i++) {
            NSLog(@"%@",dogs[i]);
        }
        NSLog(@"__________________________________________________");
        //2.增强for遍历(最常用,最简单)
        for (LSDog *dog in dogs) {
            NSLog(@"%@",dog);
        }
        NSLog(@"__________________________________________________");
        //3.通过枚举器
        NSEnumerator *enumdogs = [dogs objectEnumerator];
        LSDog *dog4 = [[LSDog alloc] init];
        while (dog4 = [enumdogs nextObject]) {
            NSLog(@"%@",dog4);
        }
        NSLog(@"__________________________________________________");
        //4.通过block数据类型
        [dogs enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            NSLog(@"%@",obj);
            if (idx == 1) {   //当索引==1的时候,就停止
                *stop = YES;
            }
        }];
        //5.如何让数组里面的对象都执行方法
        //1.类似for循环,但是效率要高于for
        [dogs makeObjectsPerformSelector:@selector(say)];
        //2.让数组中的每个元素 都调用某个方法  并把withObject后边的对象做为参数传给方法sel
        [dogs makeObjectsPerformSelector:@selector(show:) withObject:dog3];
    }
    return 0;
}
#import <Foundation/Foundation.h>//------LSDog.h

@interface LSDog : NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)int age;
-(void) say;
-(void) show:(LSDog *) dog;
@end
#import "LSDog.h"//------LSDog.m

@implementation LSDog
-(NSString *)description{
    return [NSString stringWithFormat:@"name = %@,age = %d",_name,_age];
}
-(void) say{
    NSLog(@"wang");
}
-(void) show:(LSDog *) dog{
    NSLog(@"name = %@",dog.name);
}

@end








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值