美文网首页
OC中的block回顾

OC中的block回顾

作者: 旷野独狼 | 来源:发表于2019-03-11 18:17 被阅读0次

    1.block声明

        /*
         这是一个名字为blockName的 block声明,
         返回值类型为double,参数类型为int,参数名为num
         block内容是 return num * 3.0;
         */
        double (^blockName)(int) = ^(int num){
            return num * 3.0;
        };
    

    2.block的typedef

    2.1 typedef的使用

        /*
         声明一个名为myBlockType的代码块类型,
         该类型的参数有两个,一个int类型,参数名为num,一个double类型,参数名为multi
         该类型的返回值类型为double
         */
        typedef double (^myBlockType)(int num,double multi);
    

    2.2 声明block类型的使用

        @interface GXBlockManager : NSObject
          // 2.2.1声明myBlockType类型的实例变量
        @property (nonatomic,copy)myBlockType myblock;
    
        @end
        @implementation GXBlockManager
    
        - (void)testUseBlock
        {
            //2.2.2 block属性赋值
            self.myblock = ^double(int num, double multi) {
                return num * multi;
            };
            //2.2.3  block 调用
            double testCount = self.myblock(3,4.0);
            NSLog(@"testCount = %.f",testCount);
        }
    
        @end
    

    3.block作为实例变量以及作为方法的参数类型

        @interface GXBlockManager : NSObject
        // block作为实例变量
        // 声明参数是NSString 类型 返回值是BOOL类型 名字是isRightMIMEType 的block实例变量
        @property(nonatomic,copy)BOOL(^isRightMIMEType)(NSString *MIMEType);
        @end
    
        @implementation GXBlockManager
    
        // block作为方法的参数
        //方法参数是一个 返回值时BOOL类型 block参数是NSString类型 block参数名是MIMEType 的block
        -(void)registerIsRightMIMEType:(BOOL(^)(NSString * MIMEType))isRightMIMEType
        {
            self.isRightMIMEType = isRightMIMEType;
        }
    
        // block参数名可以省略
        -(void)registerIsRightMIMEType2:(BOOL(^)(NSString *))isRightMIMEType
        {
            self.isRightMIMEType = isRightMIMEType;
        }
    
        //block的使用
        -(BOOL)isIsRightMIMEType:(NSString *)MIMEType
        {
            if (self.isRightMIMEType) {
                return self.isRightMIMEType(MIMEType);
            }
            return NO;
        }
    

    相关文章

      网友评论

          本文标题:OC中的block回顾

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