block_块语法
来源:互联网 发布:论文表格数据来源格式 编辑:程序博客网 时间:2024/06/05 23:10
block块语法,避免了代理传值的麻烦。
// block的定义
// 1.无返回值 无参数的block变量
// 与int a = 3; 等价
void (^block)(void) = ^(void){
//函数的定义
NSLog(@"block语法");
};
// block的使用
block();
// block的结构
/*
返回值类型(^ 变量名) (参数类型, 参数类型) = ^(参数类型, 参数类型){
要执行的代码};
*/
// 2.无返回值 有参数的block语法
void(^ block1) (int b) = ^(int b) {
NSLog(@"传入的参数值为: %d", b);
};
// 使用block 需要传入一个参数
block1(2);
// 3.有返回值 无参数的block语法
NSString *(^ block2) (void) = ^(void) {
return @"111";
};
NSLog(@"%@", block2());
// 4.有返回值 有参数
int (^ block3) (int b) = ^(int b) {
return 4 * b;
};
NSLog(@"%d", block3(5));
要在第二个视图控制器控制第一个控制器,使其改变第一个视图控制器的颜色;具体如下:
FirstViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
建一个button,点击跳到第二个页面
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(20, 140, 280, 40);
button.backgroundColor = [UIColor purpleColor];
[button setTitle:@"button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClickedColor:)forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)buttonClickedColor:(UIButton *)button
{
block块语法
111,先在First里写出block的语法,实现什么功能,返回值,参数类型等
void (^block)(UIColor *color) = ^(UIColor *color) {
self.view.backgroundColor = color;
};
SecondViewController *second = [[SecondViewController alloc] init];
444.调用second属性,使其接收颜色值
second.block = block;
[self.navigationController pushViewController:second animated:YES];
}
SecondViewController:
@property (nonatomic, copy)void(^block)(UIColor *color);
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
用于点击返回第一个页面
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(20, 200, 280, 100);
[button setTitle:@"button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(back:)forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
333.将button点击的方法返回紫色
- (void)back:(UIButton *)button
{
self.block ([UIColor purpleColor]);
}
////////另一种方法,自己定义一个方法,
@property (nonatomic, copy)void(^block)(UIColor *color);属性
- (void)changeFirst:(void(^)(UIColor *color))block1;自定义方法
- (void)back:(UIButton *)button
{
self.block ([UIColor purpleColor]);
}
- (void)changeFirst:(void(^)(UIColor *color))block1
{ 给自己的属性赋值
self.block = block1;
}
[second changeFirst:^(UIColor *color) {
self.view.backgroundColor = color;
}];
- block_块语法
- 块语法
- 块语法
- Always过程块语法
- 块语法 block timer
- Object-C 块语法
- Block块语法
- Block块语法
- block块语法
- Objective-c 块语法
- Block 块语法
- 关于块语法的封装
- IOS--OC--LessonBlock 块语法
- OC之Block块语法
- OC 6 Block块语法
- 块-block(语法部分)
- iOS块语法详解(block编程)
- iOS块语法详解(block编程)
- Wampserver默认mysql密码重置,Wampserver教程,Wampserver安装教程,网站发布外网
- 【leetcode】Candy
- Android 知识点
- 源码阅读小技巧
- const 成员 static 成员 const static int 成员初始化
- block_块语法
- 精通安卓性能优化-第八章(三)
- Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
- 结构体大小求值
- Heritrix 的优化
- Cocos2d-x中获取时间函数
- UVa11970 - Lucky Numbers
- hdu1285确定比赛名次(字典序最小的拓扑排序)
- C/C++优化