新浪微博客户端(34)-block的细节与本质

Posted 夜行过客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新浪微博客户端(34)-block的细节与本质相关的知识,希望对你有一定的参考价值。

 

main.m

#import <Foundation/Foundation.h>


void test4();



int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        test4();
        
    }
    return 0;
}



// 普通的局部变量,block只会引用它初始的值(block定义那一刻),不能跟踪变量的改变
void test1() {


    int i = 10;
    
    void (^next)() = ^{
        
        printf("当前i的值是:%d\n",i); // 输出为10
    
    };
    
    i = 20;
    
    next();

}


// 被static修饰的局部变量,block内部会一直引用
void test2() {
    
    
    static int i = 10;
    
    /**
     *  block 的定义语法
     *  void 是返回值
     *  (^next) 定义一个block,block的名字是next
     *  (int) 代表该block可以接收一个参数
     */
    void (^next)(int) = ^(int i){
        
        printf("当前i的值是:%d\n",i); // 输出为20
        
    };
    
    i = 20;
    
    next(5);
    
}


// 被__block修饰的局部变量,block内部会一直引用
void test3() {
    
    
    __block int i = 10;
    
    void (^next)() = ^{
        
        printf("当前i的值是:%d\n",i); // 输出为20
        
    };
    
    i = 20;
    
    next();
    
}



int j = 10;

// 全局变量,block会一直引用
void test4() {
    
    void (^next)() = ^{
        
        printf("当前i的值是:%d\n",j); // 输出为20
        
    };
    
    j = 20;
    
    next();
    
}

 

以上是关于新浪微博客户端(34)-block的细节与本质的主要内容,如果未能解决你的问题,请参考以下文章

新浪微博iOS客户端架构与优化之路

基于新浪微博的⽇志数据分析

基于新浪微博的⽇志数据分析

新浪微博客户端(60)-离线缓存微博数据

新浪微博客户端-设置导航栏主题

如何通过python调用新浪微博的API来爬取数据