Objective-C入门20:Block
来源:互联网 发布:java开发工程师工资 编辑:程序博客网 时间:2024/06/13 13:01
Objective-C入门20:Block
main.m
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { // Block :闭包 又叫 代码 块 可以当做参数传递// Block :也算是一个函数 // Block(闭包)就是能够读取其他函数内部变量的函数// Block 可以访问 修改 内部变量 // 使用 Block的好处 : 可以组织独立的代码段 提高代码的复用性 可读性// Block 重要特点 : 常用于一个操作完成后的回调 // block 公式 声明 和 实现 // 1、无返回值的Block 公式 // 2 、无返回值的Block 公式// void ( ^block的名字 )(形参列表);// block的名字 = ^(形参列表)// {// 具体实现代码// } ; // 有返回值的 Block 的公式// 返回值类型(^block的名字)(形参列表) =^(形参列表)// {// return 返回值类型的一个参数 ;// } ; #pragma mark---------------无返回值的Block 练习-------------------------------- void ( ^miao )() = ^() { NSLog( @"喵~" ) ; } ;// Block 的调用// block的名字(实参) miao( ) ; void ( ^wahaha )(); wahaha = ^() { NSLog(@"水~"); } ; wahaha(); void( ^wangwang )( NSString *message ) = ^( NSString *message ) { NSLog(@"%@" , message ) ; } ; wangwang(@"变身狗妖"); void ( ^miaomiao )(NSString *message1); miaomiao = ^(NSString *message1 ) { NSLog(@"%@" , message1 ) ; } ; miaomiao(@"变身猫妖" ); // 可以访问到另一个 方法(函数) 内部的临时变量// 不仅可以访问 还可以 修改(__block) __block int v = 10 ;void(^sum)(int a , int b ) = ^(int a , int b ) { v = a+b ; NSLog(@"%d" , v ) ; } ; sum ( 100,101 ) ;__block int k = 10 ; void ( ^sum1)( int a , int b ); sum1 = ^(int a , int b) { k=a+b; NSLog(@"%d" ,k ) ; } ; sum1(20,5); __block NSString * aa = @"asffs" ; void( ^zf )( NSString *bb ) = ^( NSString *bb ) { NSString *aabb = [ aa stringByAppendingString : bb ] ; NSArray *all = @[ aabb ] ; NSLog( @"%@" , all ) ; } ; zf( @"是色鬼" );__block NSString * cc = @"tgar" ; void ( ^zfc )(NSString *bb) ; zfc = ^( NSString *bb ) { NSString *ccbb = [ cc stringByAppendingString : bb ] ; NSArray *all = @[ ccbb ]; NSLog(@"%@" , all ) ; } ; zfc( @"是流氓" ); int (^summ)( int a,int b ) =^( int a,int b ) { return a+b ; } ; NSLog( @"%d" , summ ( 1 , 50 )*25 ) ; NSMutableDictionary *dic = [ NSMutableDictionary dictionary ] ; NSDictionary * (^add)() = ^() { [ dic setObject:@"wgfgfw" forKey:@"name" ] ; NSDictionary *d =[ dic copy ] ; return d ; } ; NSLog(@"%@",add()); NSString* (^leirong)(NSString *s) ; leirong = ^(NSString *s) { NSString * bb = [NSString stringWithFormat: @"他说:%@ " , s ]; return bb ; } ; leirong ( @"你真帅" ); NSLog(@"%@" , leirong ( @"你真帅" ) ); Person *p = [ [ Person alloc ] init ] ; [ p aaaa ] ; } return 0;}
Person.h
#import <Foundation/Foundation.h>@interface Person : NSObject- (void)aaaa ; @end
Person.m
#import "Person.h"@implementation Person//block 回调函数// 带有 block 参数的函数公式//void 的地方 可以是其他返回值类型// - ( 返回值类型 ) 函数名 : (void(^)(参数列表))block 名字// {// block 名字(实参);// }- (void)aaaa{ [ self message:^(NSString *m) { NSLog(@"%@",m); } ] ; [ self area:^int(int w, int h) { return w*h ; } ] ; }- ( void ) message : (void(^)(NSString *m ))block{ block(@"世界原来如此美好") ;}// 计算并输出 矩形的面积的方法- (void)area: (int (^)(int w,int h))block { NSLog(@"矩形的面积:%d" , block(15,30) ) ; }@end
0 0
- Objective-C入门20:Block
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 详解
- objective-c block 讲解
- objective-c block 讲解
- Objective-C block
- objective-c block 详解
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 讲解
- Objective-C block
- objective-c block 详解
- objective-c block 详解
- 微信公众号开发访问第三方网页获取用户的openid
- Java switch开关语句的break,default作用
- [AFNetworking]源代码分析--AFURLRequestSerialization.h
- 第十三章 查找
- 上拉刷新,下拉加载
- Objective-C入门20:Block
- Android 蓝牙开发(一)Android系统的蓝牙模块简介
- EXCEL编程从0开始
- 字符串笔试题
- 第十四章 Vim之替换
- UVALive 6851 The Programmers(二分图多重匹配)
- sprintf_s使用时候报访问地址冲突
- Unsafe初涉
- 查看/修改Linux时区和时间