zoukankan      html  css  js  c++  java
  • 傻瓜学编程之block_1

    1、引出

    1.1、int pp = 3;for循环为dd赋值并 调用 finprint(int ,int)函数 获取pp*dd的乘积,输出
    void finalValue(int d, int scale){
        
        printf(".......%d",scale*d);
        printf("
    ");
        
    }
    
    void finprint(int j,int  i){
        
        printf("其他操作
    ");
    
        void (*fin)(int d,int s) = &finalValue;
        
        fin(j,i);  
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        int dd ;
        int pp = 3;
        for (int j= 0; j<5; j++) {
            dd=j;
            finprint(pp,dd);
        }
    }
    

     a:必须获取finalValue函数的名字,

     b: finalValue如果想使用 dd,pp (也即finprint中的形式参数 j和i) 必须传递到finalValue中才可以使用;

     1.2、不用必须获取finalValue函数的名字,

    void finprint(int j,int  i){
        
        printf("其他操作
    ");
    
        void (^fina)(int d,int s) = ^(int d,int s){
            printf(".......%d",s*d);
            printf("
    ");
        };
        fina(j,i);
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        int dd ;
        int pp = 3;
        for (int j= 0; j<5; j++) {
            dd=j;
            finprint(pp,dd);
        }
    }
    

    1.3、不用传递参数参数也可以访问finprint中的形式参数 j和i;

    void finprint(int j,int  i){
        
        printf("其他操作
    ");
    
        void (^fina)(void) = ^(void){
            printf(".......%d",j*i);
            printf("
    ");
        };
        fina();
    }
    

     2、 block

    2.1、简单概述:带有自动变量(局部变量)的匿名函数;

            1)没有函数名

            2) 带有”^“号

    2.2、语法格式:具体格式

      ^ 返回值类型 参数列表  表达式

     其中  返回值类型 参数列表 可省略

    block
    How Do I Declare A Block in Objective-C?
    
    As a local variable:
    returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
    

    As a property: @property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
    As a method parameter: - (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;
    As an argument to a method call: [someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
    As a typedef: typedef returnType (^TypeName)(parameterTypes); TypeName blockName = ^returnType(parameters) {...};
    This site is not intended to be an exhaustive list of all possible uses of blocks.If you find yourself needing syntax not listed here, it is likely that a typedef would make your code more readable.Unable to access this site due to the profanity in the URL? http://goshdarnblocksyntax.com is a more work-friendly mirror.
  • 相关阅读:
    Selenium IDE
    selenium简介
    Java程序要操作数据库,一定要使用JDBC技术吗?
    JDBC几个接口分区叫什么?它们分别有什么用?
    JDBC的全称是什么?
    什么时候使用session?什么时候使用application?
    内置对象session和application的作用是什么?
    修改表单中为什么要使用隐藏域?
    如何创建一个不能修改的属性?
    如何修改属性?
  • 原文地址:https://www.cnblogs.com/xiaowuqing/p/7628833.html
Copyright © 2011-2022 走看看