zoukankan      html  css  js  c++  java
  • 重点block

    //  main.m

    //  block探索

    //

    //  Created by 殷婷婷 on 15-6-6.

    //  Copyright (c) 2015年 lanou. All rights reserved.

    //

    #import <Foundation/Foundation.h>

    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            

    //====================普通变量==============================

            

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

    //        int a = 10;

    //        

    //        a = 20;

    //        void (^block)() = ^{

    //                             NSLog(@"%d",a);//block会在定义那一刻直接拿到外部局部变量的值,以后都不会改变,这个值相当于是个常量了,所以打印20

    //                           };

    //        

    //        a = 100;

    //        

    //        block();

    //======================被__block修饰的变量======================

            

         __block int a = 10;

            

            a = 20;

            void (^block)() = ^{

                NSLog(@"%d",a);//block能够一直引用被__block修饰的变量,所以打印100

            };

            

    block本质上是指向结构体的指针,之所以可以改变变量的值,因为它传的是地址。        a = 100;

            

            block();

            

        }

        

    //===================被static修饰的变量========================

        

        static int a = 10;

        

        a = 20;

        void (^block)() = ^{

            NSLog(@"%d",a);//block能够一直引用被static修饰的变量,所以打印100

        };

        

        a = 100;

        

        block();

        

    //===================全局变量================================

    //    int a = 10;这个a定义在函数外

        

        a = 20;

        void (^block)() = ^{

            NSLog(@"%d",a);//block能够一直引用全局变量,所以打印100

        };

        

        a = 100;

        

        block();

        

    }

    block究竟放在什么地方?既放在堆中,又放在栈中。默认情况下,任何block都是在栈,随时可能会被回收。对block进行一次copy操作,block就会放在堆中

     两种写法

    [block copy].....Block_copy(block):ARC环境不可用。。。。

    retain只是计数器加1,不会将block从栈中搬到堆中

    __unsafe_unretained相当于_weak

  • 相关阅读:
    提高C#编程水平的50个要点
    纯CSS Tooltips..
    分支结构程序设计
    个性测试题
    CSS与DIV
    数据库设计中的14个技巧
    XML文档处理(树的应用)
    使用设计模式构建通用数据库访问类
    什么样简历最受名企欢迎?
    如何做需求分析
  • 原文地址:https://www.cnblogs.com/yintingting/p/4556825.html
Copyright © 2011-2022 走看看