zoukankan      html  css  js  c++  java
  • OC-Block语法

     1 //
     2 //  main.m
     3 //  BlockTest
     4 //
     5 //  Created by LiuChanghong on 15/9/25.
     6 //  Copyright © 2015年 LiuChanghong. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 
    11 int main(int argc, const char * argv[]) {
    12     @autoreleasepool {
    13 
    14         void(^block1)(void) = ^(void){
    15             NSLog(@"block1——无返回值无参数");
    16         };
    17         
    18         void(^block2)(int,int) = ^(int x,int y){
    19             NSLog(@"block2——无返回值有参数 %d + %d = %d",x,y,x+y);
    20         };
    21         
    22         int(^block3)(void) = ^(void){
    23             NSLog(@"block3——有返回值无参数");
    24             return 0;
    25         };
    26         
    27         int(^block4)(int,int) = ^(int x,int y){
    28             NSLog(@"block4——有返回值有参数");
    29             return x + y;
    30         };
    31         
    32         block1();
    33         block2(3,8);
    34         block3();
    35         block4(4,9);
    36     
    37     }
    38     return 0;
    39 }

    输出结果

     block 与变量的关系

    • block 与 局部变量的关系
    int temp = 100;
            
    void (^blockTest)(void) = ^(void){
        NSLog(@"%d",temp++);//会报错
        NSLog(@"%d",temp+1);
    };

    第一行NSLog会报错,第二行不会报错,因为temp++相当于temp = temp + 1,然而block默认不能修改局部变量的值。

    __block int temp = 100;
            
    void (^blockTest)(void) = ^(void){
        NSLog(@"%d",temp++);//不会报错
        NSLog(@"%d",temp+1);
    };

    如果局部变量 temp 在声明时用 __block 进行修饰,blockTest内就能够修改它的值了。

    注意:block可以直接修改全局变量。

  • 相关阅读:
    HTML_表单
    HTML_列表、表格与媒体元素
    HTML_HTML5基础
    使用java理解程序逻辑 试题分析
    字符串
    带参数的方法
    人机猜拳
    类的无参方法
    类和对象
    vue cli+axios踩坑记录+拦截器使用,代理跨域proxy(更新)
  • 原文地址:https://www.cnblogs.com/liuchanghong/p/4839380.html
Copyright © 2011-2022 走看看