您的位置:首页 > 其它

OC-040.NSArray的遍历方式

2015-12-14 15:14 274 查看
遍历方式一般分为以下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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: