block

作者: 林希品 | 来源:发表于2021-12-02 15:48 被阅读0次

    //block的原型:

        NSString *(^myBlock)(int); 
        //上面的代码声明了一个block(^)原型,名字叫做myBlock,包含一个int型的参数,返回值为NSString类型的指针。 
        //block的定义: 
        myBlock=^(int paramA){ 
            return [NSString stringWithFormat:@"Passed number:%d",paramA]; 
        };      
        myBlock(2);
      //基本使用   返回值 UIImage object 
        UIImage *oldImage=[UIImage imageNamed:@"avatar"]; 
        UIImage *(^myImageBlock)(UIImage*)=^(UIImage *image){ 
            return image; 
        }; 
        UIImage *newImage=myImageBlock(oldImage); 
    

    //基本使用 无返回值

    NSString *string=@""; 
    void (^logBlock)(NSString *)=^(NSString *paramStr){ 
        NSLog(@"logBlock log:%@",paramStr); 
    }; 
    logBlock(string);
    

    //含有block参数的函数 比较常见的类型,如网络请求中的successfulBlock
    //方法

        - (void)turnNumberWithNumberA:(NSInteger)a NumberB:(NSInteger)b andMyBlock:(void(^)(int aa,int bb))myBlock{ 
            int c=[[NSNumber numberWithInteger:a]intValue]; 
            int d=[[NSNumber numberWithInteger:b]intValue]; 
            myBlock(c,d); 
        }
    

    //调用

        [self turnNumberWithNumberA:1 NumberB:2 andMyBlock:^(int aa, int bb) { 
            NSLog(@"aa is %d",aa); 
            NSLog(@"bb is %d",bb); 
        }];
    

    //block在两个视图的传值 Apush到B B消失时将textfield的值传回A
    //B.h

    typedef void (^ReturnTextBlock)(NSString *showText);//给block重命名,方便调用 
    @interface B : UIViewController 
    @property (nonatomic, copy) ReturnTextBlock returnTextBlock;//声明一个block属性 
    - (void)returnText:(ReturnTextBlock)block;//加上后方便第A视图书写该block方法 
    @end
    
        //B.m 
        - (void)returnText:(ReturnTextBlock)block {//block的实现方法 
            self.returnTextBlock = block; 
        } 
        - (void)viewWillDisappear:(BOOL)animated {           
            if (self.returnTextBlock != nil) { 
                self.returnTextBlock(self.inputTF.text);//视图将要消失时候调用 
            } 
        }
    

    //A.m需要push的时候调用

    B *bVC = [[B alloc]init]; 
    [bVC returnText:^(NSString *showText) {//定义B视图后调用block 
        self.showLabel.text = showText; 
    }];
    
    image.png

    相关文章

      网友评论

          本文标题:block

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