主要用于一个数组的元素需要执行同样的方法.
//模型
1 #import "Animal.h" 2 3 @implementation Animal 4 - (void)setName:(NSString *)name 5 { 6 _name = name; 7 } 8 9 - (void)printInfo:(NSString *)info 10 { 11 NSLog(@"info = %@",info); 12 }
//常见的循环遍历
1 NSMutableArray *array = [[NSMutableArray alloc]init]; 2 //for 循环 3 for (int i = 0; i < 10; i++) { 4 Animal *animal = [[Animal alloc]init]; 5 animal.name = @"monkey"; 6 [array addObject:animal]; 7 } 8 9 //for in 10 for (Animal *aniaml in array) { 11 [aniaml printInfo:aniaml.name]; 12 } 13 14 //迭代器 15 NSEnumerator *enumerator = [array objectEnumerator]; 16 id object = nil; 17 while (object = [enumerator nextObject]) { 18 if ([object respondsToSelector:@selector(printInfo:)]) { 19 [object printInfo:((Animal*)object).name]; 20 } 21 } 22 23 //block 24 [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 25 if ([obj isKindOfClass:[Animal class]]) { 26 if ([obj respondsToSelector:@selector(printInfo:)]) { 27 [obj printInfo:((Animal*)obj).name]; 28 } 29 } 30 }];
//NSArray -> makeObjectsPerformSelector
1 [array makeObjectsPerformSelector:@selector(printInfo:) withObject:@"name"];
//执行结果
记下笔记.
原文:http://www.cnblogs.com/luohome-ios/p/4958009.html