Block使用变量,让你的程序看起来清晰!
- <span style="font-size:24px;">为什么要使用block变量呢?
- 由于当我们的程序比較繁杂的时候,我们在一个函数中要调用一个函数,还须要在外边来定义,实现,非常不方便,可是有了block变量我们就能够在一个函数的内部来定义一个block变量,相当于又在函数的内部来定义了一个函数.
- int (^max)(int x,int y) = ^(int x,int y)//求两个数的最大值
- {
- return x > y ?
x :y;
- };
- NSLog(@"%d",max(5,10));
- int (^min)(int x,int y) =^(int x,int y)//求两个数的最小值
- {
- return x > y ? y : x;
- };
- NSLog(@"%d",min(5,10));</span>
- <pre name="code" class="cpp"><span style="font-size:24px;">当中block变量的类型为:int(^)(int x ,int y);
- max 为变量名,一般看函数是什么类型,仅仅须要把函数名去掉然后剩下的就是函数的类型.
- ^(int x ,int y)
- {
- return x + y;
- }
- 上面的对block变量进行初始化.</span>
- <span style="font-size:24px;">当在block内部使用block外部定义的局部变量时,假设变量没有被__block修饰,则在block内部是仅仅读的,不能对它改动,假设想改动,变量前必需要有__block修饰
- __block的作用是告诉编译器,在编译时在block内部不要把外部变量当做常量来使用,还是当做变量来使用.
- 假设block访问全局变量,不需要__block修改,
Block使用变量,让你的程序看起来清晰!的更多相关文章
- block没那么难(二):block和变量的内存管理
本系列博文总结自<Pro Multithreading and Memory Management for iOS and OS X with ARC> 了解了 block的实现,我们接着 ...
- Block对变量的引用
如果在 Block 内部使用外部的变量,Block 会持有这个变量.下面来看几中特殊的情况,看 Block 对变量的持有情况如何. typeof @interface X : NSObject @pr ...
- 让你的 Qt 桌面程序看上去更加 native(一共六篇)
<让你的 Qt 桌面程序看上去更加 native>是一个系列文章.在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native.这里,我假设你已经清楚如何使用 Qt 编 ...
- 从JDBC程序看为什么需要Mybatis
package com.xuebusi.jdbc; import java.sql.*; /** * 从JDBC程序看为什么需要Mybatis * * 1.加载驱动程序和数据库连接所需要的url.用户 ...
- Block之变量作用域
在使用block的过程中经常会调用不同类型.不同作用域的变量,如果对这些变量作用域的理解稍有偏差,就会出现问题.故此特意整理出block中会经常使用到的几种变量,如有补充,欢迎指出. 1. 局部变量 ...
- python变量、注释、程序交互、格式化输入、基本运算符
变量 ...
- (未完成)在block内如何修改block外部变量
变量必须用__block修饰,否则编译不通过 block内部会把变量拷贝到堆区 变量从栈区copy->堆区 通过对对象取地址,打印出对象在内存中的地址 &a block不允许修改外部变量 ...
- 几个简单的程序看PHP的垃圾回收机制
每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁,防止程序执行内存溢出. 一.PHP 垃圾回收机 ...
- java学习笔记(1)java的基础介绍 、JDK下载、配置环境变量、运行java程序
java工程师是开发软件的 什么是软件呢? 计算机包括两部分: 硬件: 鼠标.键盘.显示器.主机箱内部的cpu.内存条.硬盘等 软件: 软件包括:系统软件和应用软件 系统软件:直接和硬件交互的软件:w ...
随机推荐
- 利用Jquery实现http长连接(LongPoll)
参考:http://www.cnblogs.com/vagerent/archive/2010/02/05/1664450.html PS:为了满足 某些需要 实时请求的业务(PS:例如聊天室),我们 ...
- mcd, lm, VS lx
LED常识之 mcd&lm&w的关系 转载自:http://1198.vip.blog.163.com/blog/static/202177117201211624535412/ LE ...
- bzoj 1200: [HNOI2005]木梳 DP
1200: [HNOI2005]木梳 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 266 Solved: 125[Submit][Status] ...
- 【技术贴】破解Myeclipse10.7
程序用的是http://www.cr173.com/soft/58306.html这个破解程序,是英文版的中文版.使用起来非常爽,看下面 使用期间关掉Myeclipse 期间的第三步,点击激活,此时会 ...
- 【HDU 4276】The Ghost Blows Light(树形DP,依赖背包)
The Ghost Blows Light Problem Description My name is Hu Bayi, robing an ancient tomb in Tibet. The t ...
- Python3整理文件
晚上打算把播放器下载下来的音乐拷贝到mp3里边,但是它是如下形式存放的,相当头痛…… 作为程序员,想到使用python来遍历这个目录,并将有大于限制的音乐文件拷贝到指定目录,相关实现代码如下: # a ...
- [Mac]使用xcode命令行编译protobuf
因为不想每次测试与画面显示无关的小功能时把cocos2dx包含进去,所以改用xcode的command line tool直接建立c++项目. 方法: 1.点击file-new-project,选择o ...
- 如何实现Android重启应用程序代码 ?
Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage(getBaseContext().getPack ...
- C# WinForm捕获未处理的异常
using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespa ...
- Using Nini .NET Configuration Library
Using Nini .NET Configuration Library Tweet When developing a desktop application, there will be tim ...