如何在iOS中使用Block
来源:互联网 发布:编写软件程序网站 编辑:程序博客网 时间:2024/06/05 10:36
http://bj007.blog.51cto.com/1701577/491608
2011-02-12 09:11:48
标签:iOS4 职场 休闲 Block
- int num1 = 7;
- int(^aBlock)(int) = ^)int num2) {
- return num1+nunm2;
- };
- NSLog(@"%d", aBlock(49)); //adds 49 to 7 which gives us 56.
- NSComperator compareStringsBlock = ^(id stringA, id stringB) {
- NSRange rangeS = NSMakeRange (0, [stringA length]);
- return (stringA compare:stringB options:comparisonOptions range:rangeS locale:currentLocale];
- };
- NSArray *compareSortArray = [arrayOfStringDays sortArrayUsingComparator: compareStringsBlock]);
- 和函数一样具有一个指定类型的参数列表
- 有一个可以推导或声明的返回值类型
- 可以从它被定义的词义范围中捕捉状态
- 可以在需要的时候改变词义范围的状态
- 可以和相同的词义范围中定义的其他的Block共享更改的可能。
- 可以在词义范围(堆栈帧)被销毁后继续共享和修改该词义范围(堆栈帧)的状态。
- int (^oneFrom)(int) = ^(int anInt) {
- return anInt - 1;
- };
- // 我们创建了一个内联块^(int anInt)... ,其函数体和结果被传到了另外一个名为OneFrom的Block。
- printf("1 from 10 is %d", oneFrom(10));
- // 打印出: "1 from 10 is 9"
- // 这个block函数(distanceTraveled)传入3个float型参数,返回float值。
- float (^distanceTraveled) (float, float, float) =
- ^(float startingSpeed, float acceleration, float time) {
- float distance = (startingSpeed * time) + (0.5 * acceleration * time * time);
- return distance;
- };
- NSArray *anArray = [NSArray arrayWithObjects: @"cat", @"dog",nil];
- sortFunction(anArray, ^(string *a string *b){
- if ( a == @"cat") return TRUE; });
- NSArray *array = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
- NSSet *filterSet = [NSSet setWithObjects: @"A", @"Z", @"Q", nil];
- BOOL (^test)(id obj, NSUInteger idx, BOOL *stop); //Block declaration returns BOOL, params inc. id and BOOL
- //body of block gets the block literal ^(id obj, NSUInteger idx, Bool *stop)... and the body logic
- test = ^ (id obj, NSUInteger idx, BOOL *stop) {
- if (idx < 5) {
- if ([filterSet containsObject: obj]) {
- return YES;
- }
- }
- return NO;
- };
- __block BOOL found = NO;
- NSSet *aSet = [NSSet setWithObjects: @"Alpha", @"Beta", @"Gamma", @"X", nil];
- NSString *string = @"gamma";
- //we provide below a way of how to enumerate, using our own compare logic
- [aSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
- if ([obj localizedCaseInsensitiveCompare:string] == NSOrderedSame) {
- *stop = YES;
- found = YES;
- }
- }];
- 如何在iOS中使用Block
- 如何在iOS中使用Block
- 如何在iOS中使用Block
- 如何在IOS中使用block
- 如何在 iOS 5 中使用 Block
- 如何在iOS中使用Block
- 如何在iOS中使用Block
- 如何在iOS中使用Block
- 如何在iOS中使用Block
- 如何在iOS中使用 block
- 如何在iOS中使用Block
- 如何在 iOS 5 中使用 Block (1)
- 如何在 iOS 5 中使用 Block (2)
- 如何在 iOS 5 中使用 Block (1)
- 如何在 iOS 5 中使用 Block (2)
- 如何在 iOS 5 中使用 Block (2)
- 如何在 iOS 5 中使用 Block (2)
- 如何在 iOS 5 中使用 Block (1)
- eclipse 代码自动补全功能增加
- 工厂设计模式的简单使用
- 【单调队列】hdu 4193 Non-negative Partial Sums
- SQL SERVER 2005 无人值守安装过程
- OO的思想
- 如何在iOS中使用Block
- java加载class过程
- hibernate多对一的映射的配置
- hibernate 一对一外键关联映射_双向
- SQLPLUS中HELP帮助的安装与删除
- Untiy3D的版本更新
- 【黑马程序员】 学习笔记 - Java数组及排序算法
- 山东理工大学ACM平台题答案 1134 数列求和
- 拓展游戏内容的7种有效方法