zoukankan      html  css  js  c++  java
  • [Objective-c 基础

    A.概念

    1.block类似函数
    (1)可以保存代码
    (2)有返回值
    (3)有形参 
    2.block的标志:^
     1     // 没有参数和返回值的block
     2     void (^myblock)() = ^{ // 没有形参,可以省略()
     3         NSLog(@"这是新定义的block");
     4     };
     5    
     6     myblock();
     7  
     8     // 带参数和返回值的block
     9     int (^sum)(int a, int b) = ^(int a, int b){
    10         return a + b;
    11     };
    12    
    13     int c = sum(10, 11);
    14     NSLog(@"%d", c);
     
    3.可以访问代码块外的数据
    1     int a = 10;
    2     void (^block)();
    3     block = ^{
    4         NSLog(@"a = %d", a);
    5     };
    6     block();
    out:
    2014-11-15 09:25:34.766 04-block[1355:303] a = 10
     
    4.不能修改代码块外的局部变量
    1     int a = 10;
    2     void (^block)();
    3     block = ^{
    4         a = 20; // 默认情况下, block内部不能修改外面的局部变量
    5         NSLog(@"a = %d", a);
    6     };
    7     block();
     
    解决:给局部变量加上”__block”(双下划线开头)关键字
    1     __block int a = 10;
    2     void (^block)();
    3     block = ^{
    4         a = 20; // error
    5         NSLog(@"a = %d", a);
    6     };
    7     block();
    out:
    2014-11-15 09:28:52.814 04-block[1376:303] a = 20
     
    5.使用typedef
     1 typedef int (^MyBlock) (int, int);
     2  
     3     MyBlock sumBlock;
     4     sumBlock = ^(int a, int b){
     5         return a + b;
     6     };
     7    
     8     MyBlock minusBlock;
     9     minusBlock = ^(int a, int b){
    10         return a - b;
    11     };
     
  • 相关阅读:
    【JAVA】日志管理slf4j
    【JAVA】从java线程来看java内存模型
    【数据结构】---栈和队列
    【数据结构】---链表
    C++ 第10章 反省程序与C++标准模板库
    回忆C++知识点(1)
    C++ 第8章 多态性
    C++ 第7章 继承与派生
    C++ 第6章 数组、指针、字符串
    C++ 第5章 数据的共享与保护
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4119380.html
Copyright © 2011-2022 走看看