重点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

};

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();

}

时间: 2024-11-21 02:52:29

重点block的相关文章

iOS Block循环引用

前言 本篇文章精讲iOS开发中使用Block时一定要注意内存管理问题,很容易造成循环引用.本篇文章的目标是帮助大家快速掌握使用block的技巧. 我相信大家都觉得使用block给开发带来了多大的便利,但是有很多开发者对block内存管理掌握得不够好,导致经常出现循环引用的问题.对于新手来说,出现循环引用时,是很难去查找的,因此通过Leaks不一定能检测出来,更重要的还是要靠自己的分析来推断出来. 声景一:Controller之间block传值 现在,我们声明两个控制器类,一个叫ViewContr

css重点章节复习—布局-边框-边距-浮动 (部分)

css重点章节复习—布局-边框-边距-浮动 在第二个任务中,这一块的后面那条线真的弄了很久.起初也是在html里面写的代码.之后觉得这样不好,想到第一个页面中用到的border-bottom和border-top就觉得这里应该可以用border-left或者border-right 就使用了.但是出现一个问题就是不管我怎么调,整条线都是从上画到下,不能合顶部底部的两条线分开.还好记得书本里面有一处是将将垂直线和上下部分开的.查了一下,竟然是用paddding.就觉得很震惊.原来那些margin

UI中BLOCK传值的过程

将第二个文件中的textField中的值传到第一个文件的lable中 第一步:重命名 typedef void (^passValueBlock) (NSString *);? @Property   SenondViewController: UIViewController @Property (nonatomic,strong)passValueBlock      passvalueblock; [email protected] @interface    SenondViewCont

计算机组成与体系结构重点(四川大学软件学院)

四川大学软件学院计算机组成期末考试由任课教师按照教学大纲出题,采用闭卷考试的方法, 英语出题.加▲表示重点,考的概率极大.本概念集合由笔者参照课本,往年真题以及老师说的重点编写. 第一章 引言 1.  ▲指令集体体系结构(ISA):ISA是在机器上运行的所有软件和执行这些软件的硬件之间的协定接口. 2.  ▲硬件软件等效性:一切硬件可以实现的软件也可以实现反之亦然 3.  ▲计算机3个组成部分:处理器,储存器,I/O设备 4.  摩尔定律:硅芯片的密度每18个月翻一番 5.  Rock定律:制造

iOS 简单的 block &amp; 内存泄漏问题

注意 : block 用 copy 引用  typedef int (^MyBlock)(int, int); void play() { NSLog(@"play mp3"); } int main(int argc, const char * argv[]) { @autoreleasepool { MyBlock sumBlock =  ^(int a, int b){ return  a + b; }; MyBlock minusBlock =  ^(int a, int b)

iOS开发——UI篇&amp;代理/通知/Block传值(实现UItableView分组的收缩与展开)

代理/通知/Block传值实现UItableView分组的收缩与展开 初始化之后出现下面的界面 准备: 1:定义一个BOOL值用来记录点击 1 @property (nonatomic, assign, getter = isOpen) BOOL open; 2:在相应的点击方法里面是实现点击 1 self.group.open = !self.group.open; 3:在numberOfRowsInSection中返回的时候使用三木判断是否点击,并且实现伸缩与展开, 1 return mod

写给喜欢用Block的朋友(ios Block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/38090205 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 本文不讲block如何声明及使用,只讲block在使用过程中暂时遇到及带来的隐性危险. 主要基于两点进行演示: 1.block 的循环引用(retain cycle) 2.去除block产生的告警时,需注意问题. 有一次,朋友问我当一个对象中的b

Swift3.0 函数闭包与OC Block

刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 Swift中定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> String { return ("输出了\(name)") } //通用形式 func name(parameters) -> return type { function body } Swift 中基本的闭包函数与OC中Block的相似点 带参闭包 //OC中Bloc

block里的self、weakSelf、strongSelf

转自  http://www.cnblogs.com/zhang-chi/p/5532272.html ARC下,关于block里面使用self.weakSelf.strongSelf,理解一直没有特别的透彻,今天花时间研究了一下,总结如下: 其实一共就涉及到两个问题: 1.是否循环引用了 2.block里面的代码,不一定执行到哪行时,VC可能就释放了,self就为nil了,那么你到底想让代码在这种情况下如何执行. 其实到底用self.weakSelf还是strongSelf,就是上面两个问题的