美文网首页
ios block 学习

ios block 学习

作者: 倔强的仙人掌 | 来源:发表于2016-11-22 16:38 被阅读0次

    敲代码快一周年了,项目没有用过block惭愧留下学习心得;

    我这了解的比较浅显;基本语法 , 返回值类型(^变量名)(参数)=^(参数){ 执行的代码块};

    1,无返回值无参数类型

    - (void)viewDidLoad {

    [super viewDidLoad];

    void(^changeName)()=^(){

    NSLog(@"无返回值,无参数");

    };

    changeName();

    }

    2,无返回值有参数

    - (void)viewDidLoad {

    [super viewDidLoad];

    void(^changeName)(int , int)=^(int a ,int b){

    NSLog(@"结果为%d",a+b);

    };

    changeName(2,3);

    }

    3,有返回值,有参数

    //返回整形数据

    int (^changeName)(int , int)= ^(int a ,int b){

    return a+b;

    };

    changeName(2,3);

    //返回对象类型

    NSString* (^changeName)(int , int)= ^(int a ,int b){

    NSString *string = [NSString stringWithFormat:@"%d",a+b];

    return string;

    };

    NSString *str = changeName(2,3);

    还有一种用法自定义一个block数据类型  在Viewcontroller2中改变Viewcontroller的页面颜色

    ViewController2.h文件

    @interface ViewController2 : UIViewController

    typedef void(^changeColor)(id);  //定义一种block类型

    @property (nonatomic, copy)  changeColor backgroundColor;//声明这种类型的对象

    @end

    ViewController2.m文件

    - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event {

    UIColor *color = [UIColor redColor];

    self.backgroundColor(color);

    }

    ViewController.h

    - (void)viewDidLoad {

    [super viewDidLoad];

    ViewController2 *vc= [[ViewController2 alloc]init];

    //回调修改颜色

    vc.backgroundColor = ^(UIColor *color){

    self.view.backgroundColor = color;

    };

    }

    相关文章

      网友评论

          本文标题:ios block 学习

          本文链接:https://www.haomeiwen.com/subject/hjappttx.html