28、使用block 块遍历整个数组。这个block 需要三个参数,id obj 表示数组中的元素。
NSUInteger idx 标示元素的下标,
bool *stop 是一个bool类型的参数。 官方描述如下:
A reference to a Boolean value. The block can set the value to YES to stop further processing
of the array. 
The stop argument is an out-only argument. You should only ever set this Boolean to YES within
the Block.
- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx,BOOL *stop))block 
例如:
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
[array enumerateObjectsUsingBlock:^(id str,NSUInteger index, BOOL* te){
       NSLog(@"%@,%d",str,index);
   }];
29、同上面的方法一项,区别在于,这里多添加了一个参数,用来标示 是从前向后遍历,还是从后往前遍历。
- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(id obj, NSUInteger idx,BOOL
*stop))block
例如:
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
 [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id str,NSUInteger index, BOOL* te){
        NSLog(@"%@,%d",str,index);
    }];
30、 同上面的方法一项,不过NSIndexSet 参数标示,根据下标取出的数组,这里真正在block 中遍历的数组,是根据NSindexSet 取到的子数组
- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (^)(id
obj, NSUInteger idx,BOOL *stop))block 
例如:
[array enumerateObjectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]
options:NSEnumerationReverse usingBlock:^(id str,NSUInteger index, BOOL* te){
        NSLog(@"%@,%d",str,index);
    }];
31、 根据条件用来获取一个NSUIndex 对象,主要是根据条件进行数据遍历使用(测试用)
- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj, NSUInteger idx,BOOL *stop))predicate
调用如下:
NSInteger index = [array indexOfObjectPassingTest:^ BOOL (id tr,NSUInteger index, BOOL *te){
        NSString *s = (NSString *)tr;
        if([@"wendy" isEqualToString:s])
        {
            return YES;
        }
        return NO;
    }];
    
    NSLog(@"index==%d=.",index);
32、同上面的方法相同,却别在于,这里添加了一个参数,用来表示遍历是从前向后遍历还是从后遍历。
- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger
idx,BOOL *stop))predicate

33、这个添加了参数NSIntexSet 参数,用来获取子数组,然后使用这个子数组进行遍历,处理数据
- (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL
(^)(id obj, NSUInteger idx,BOOL *stop))predicate

31、 根据block 的处理获取一个NSIndexSet 对象。
- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx,BOOL *stop))predicate
调用如下:
    NSIndexSet *index = [array indexesOfObjectsPassingTest: ^ BOOL (id tr, NSUInteger index,BOOL *te){
        
        NSString *s = (NSString *)tr;
        if([s isEqualToString:@"andy"]){
            return YES;
        }
        return NO;
    }];
    NSLog(@"%@",index);
33 、 这个方法添加了参数,用来表示,是从前向后,遍历还是从后向前遍历
-
(NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts
passingTest:(BOOL (^)(id obj, NSUInteger idx,BOOL *stop))predicate
NS_AVAILABLE(10_6,4_0);
调用示例如下:
 
  NSIndexSet *index = [array
indexesOfObjectsWithOptions:NSEnumerationReverse passingTest: ^ BOOL (id
tr, NSUInteger index,BOOL *te){
        
        NSString *s = (NSString *)tr;
        if([s isEqualToString:@"andy"]){
            return YES;
        }
        return NO;
    }];
    NSLog(@"%@",index);

34、 添加参数NSIndexSet 用来获取子数组,使用子数组进行遍历
-
(NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s
options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj,
NSUInteger idx,BOOL *stop))predicate

35、对数组进行排序操作  参数cmptr 是一个block 函数块,返回的数据类型是一个NSComparisonResult 对象
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr 
调用例子如下:
NSArray *te = [array sortedArrayUsingComparator:^ NSComparisonResult (NSString *s,NSString
*s2){
        if(s.length < s2.length){
            return NSOrderedAscending;
        }
        if(s.length > s2.length){
            return NSOrderedDescending;
        }
            
       return NSOrderedSame;
    }];
    NSLog(@"te=%@.",te);
36、进行排序操作,NSSortOptions 排序的参数 用来表示是同时排序,还是稳定执行。
- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6,4_0);
    
    NSArray *test = [array sortedArrayWithOptions:NSSortStable usingComparator:^ NSComparisonResult (NSString *s,NSString *s2){
    
        if(s.length < s2.length){
            return NSOrderedAscending;
        }
        if(s.length > s2.length){
            return NSOrderedDescending;
        }
        
        return NSOrderedSame;
    }];

NSLog(@"%@",test);

37、指定区域返回通过代码块方法的索引

typedef NS_OPTIONS(NSUInteger, NSBinarySearchingOptions) {

NSBinarySearchingFirstEqual = (1UL <<8),

NSBinarySearchingLastEqual = (1UL <<9),

NSBinarySearchingInsertionIndex = (1UL <<10),

};

_6,4_0);
// binary search

NSArray block用法的更多相关文章

  1. ios专题 -block用法

    what is block Blocks are a language-level feature added to C, Objective-C and C++, which allow you t ...

  2. iOS Block 用法 (1)-once again

    Block简介: Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是“^”,接着 ...

  3. ObjectiveC中的block用法解析

    Block Apple 在C, Objective-C,C++加上Block这个延申用法.目前只有Mac 10.6 和iOS 4有支持.Block是由一堆可执行的程序组成,也可以称做没有名字的Func ...

  4. 关于block 用法

    Block  Apple 在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可執行的程式組成,也可以稱做沒有名字的Fu ...

  5. Object C中Block用法

    先了解定义C语言的函数指针! int sum (int x, int y) { return x+ y; } // 定义函数 int (*p)(int, int) = sum; NSLog(, )); ...

  6. iOS block 用法

    1.定义Block /* 回传void ,参数也是void 的block*/ void (^blockReturningVoidWithVoidArgument)( void ); /* 回传整数,两 ...

  7. block(五)用法

    最近又从网上找了点block用法的博客,供大家参考. Block简介: Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参 ...

  8. iOS分享 - 对象间的通信之delegate、notificationCenter与block

    在项目开发中,常常会涉及到对象之间的通信,而为了降低对象间的耦合,会采用delegate.notificationCenter.block三种方式来进行实现,对于他们的使用,也许大家都能熟练掌握,但是 ...

  9. 浅用block 转

    block是一门有用的大后期学问.现在我只是列出一点基本用法. 1.快速枚举(Enumeration) 通常是和NSArray, NSDictionary, NSSet, NSIndexSet放在一起 ...

随机推荐

  1. windows下找不到strings.h

    头文件用的strings.h,换成string.h就好了.但是以前的Linux系统下用strings.h,strerror都能正常编译,怎么样能正常使用strings.h linux系统下的库问题跟w ...

  2. Java生成唯一的ID

    public class UIDGenerator { private static Date date = new Date(); private static StringBuilder buf ...

  3. go语言值得学习的开源项目推荐

    谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...

  4. 【转载】openldap 备份与导入 及相关问题--扩展

    http://www.cnblogs.com/ccdc/p/3356518.html 摘要: 对openldap进行备份时,直接使用slapcat命令进行备份,使用ldapadd还原出现问题及解决. ...

  5. Eclipse中的常用快捷键

    快捷修复 Command+1 //int a=100L; //int a=(int) 100L; 快捷删除行 Command+D 快速起新行 Shift+Enter (当本行代码很长时,将光标定在本行 ...

  6. 如何不通过系统升级来安装window10正式版?(特别针对Xp用户)

    今天是个特殊的日子7/29,相信大家都等了很久了吧,win10正式版终于上线,一些不懂电脑的人只会通过360和腾讯管家等来升级到win10(XP用户除外),而对于大多数像我这样对系统比较热衷的人,我相 ...

  7. 学习笔记--HashMap浅析

    HashMap 实现了Map 接口,其底层以一个线性数组保存哈希表,所以它既有数组查询的高效,也有哈希存取的方便. HashMap提供了默认构造器,和有参构造器,在有参构造器中,提供了两个参数,可以对 ...

  8. 【BZOJ】【1015】 【JSOI2008】星球大战starwar

    并查集/时光倒流 删点维护连通块个数比较难处理,所以我们就逆序来做,先处理最后状态下有多少连通块,再依次加入被删的点,这样就变删点为加点,利用并查集即可维护连通块个数. /************** ...

  9. 最全的dedeCMS标签调用技巧和大全

    1. 页面php方法获取字段  $refObj->Fields['id']; 2. 在页面上使用PHP连接数据库查询 {dede:php} $db = new DedeSql(false); $ ...

  10. [百度空间] [转]将程序移植到64位Windows

    from : http://goooder.bokee.com/2000373.html (雷立辉 整理) 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出 ...