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

  • 相关阅读:
    h5-news_index
    h5-爆料view
    h5-列表
    h5-注册
    h5-登录
    h5-弹出层layer,提示,顶部横条,
    jquery 弹窗插件 layer
    jQuery幻灯片插件Owl Carousel
    display:block jquery.sort()
    Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
  • 原文地址:https://www.cnblogs.com/yintingting/p/4556825.html
Copyright © 2011-2022 走看看