iOS block示例
//
// block.h
// Block
//
// Created by tqh on 15/4/12.
// Copyright (c) 2015年 tqh. All rights reserved.
// #import <Foundation/Foundation.h> typedef void(^block1) (id obj); typedef void(^block2)(); typedef NSInteger(^block3)(); @interface block : NSObject //带参数
+ (void)initBlock1:(void(^)(id obj))block sum:(NSInteger)sum; //typdef
+ (void)initBlock11:(block1)block sum:(NSInteger)sum; //不带参
+ (void)initBlick2:(void(^)())block sum:(NSInteger)sum; //typedef
+ (void)initBlock22:(block2)block sum:(NSInteger)sum; + (void)blockTest:(block2)block; + (void)initBlock3:(block3)block sum:(NSInteger)sum; @end
//
// block.m
// Block
//
// Created by tqh on 15/4/12.
// Copyright (c) 2015年 tqh. All rights reserved.
// #import "block.h" @implementation block + (void)initBlock1:(void (^)(id))block sum:(NSInteger)sum{
NSString *str = @"返回字符串";
if (sum > ) {
block(str);
}
} + (void)initBlock11:(block1)block sum:(NSInteger)sum{
NSString *str = @"返回字符串";
if (sum > ) {
block(str);
}
} + (void)initBlick2:(void (^)())block sum:(NSInteger)sum{ if (sum > ) {
block();
} } + (void)initBlock22:(block2)block sum:(NSInteger)sum{ if (sum > ) {
block();
} } +(void)blockTest:(block2)block
{
block();
} +(void)initBlock3:(block3)block sum:(NSInteger)sum{ NSInteger index = block();
NSLog(@"%ld",index); } @end
//
// main.m
// Block
//
// Created by tqh on 15/4/12.
// Copyright (c) 2015年 tqh. All rights reserved.
// /**
* block回调
*
* @param argc
* @param argv
*
* @return
*/ #import <Foundation/Foundation.h>
#import "block.h"
int main(int argc, const char * argv[]) {
@autoreleasepool { [block initBlock1:^(id obj) {
NSLog(@"%@",obj);
} sum:]; [block initBlock11:^(id obj) {
NSLog(@"%@",obj);
} sum:]; [block initBlick2:^{
NSLog(@"block2");
} sum:]; [block initBlick2:^{
NSLog(@"block22");
} sum:]; [block blockTest:^{
NSLog(@"");
}]; [block initBlock3:^NSInteger{
return ;
} sum:];
}
return ;
}
iOS block示例的更多相关文章
- iOS block从零开始
iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void ...
- # iOS Block的本质(三)
iOS Block的本质(三) 上一篇文章iOS Block的本质(二)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block对对象变量的捕获,ARC 环境 block一般 ...
- iOS Block界面反向传值
在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...
- iOS block 机制
本文要将block的以下机制,并配合具体代码详细描述: block 与 外部变量 block 的存储域:栈块.堆块.全局块 定义 块与函数类似,只不过是直接定义在另一个函数里,和定义它的那个函数共享同 ...
- ios Block详细用法
ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...
- iOS Block的本质(四)
iOS Block的本质(四) 上一篇文章iOS Block的本质(三)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block内修改变量的值 int main(int ar ...
- iOS Block的本质(二)
iOS Block的本质(二) 1. 介绍引入block本质 通过上一篇文章Block的本质(一)已经基本对block的底层结构有了基本的认识,block的底层就是__main_block_impl_ ...
- iOS Block的本质(一)
iOS Block的本质(一) 1.对block有一个基本的认识 block本质上也是一个oc对象,他内部也有一个isa指针.block是封装了函数调用以及函数调用环境的OC对象. 2.探寻block ...
- (译)IOS block编程指南 1 介绍
Introduction(介绍) Block objects are a C-level syntactic and runtime feature. They are similar to stan ...
随机推荐
- spring 3 的 @value的使用
Spring 3支持@value注解的方式获取properties文件中的配置值,大大简化了我们读取配置文件的代码.使用方式如下: 1.首先必须要配置properties文件的加载bean:在spri ...
- OpenStack:安装Glance
>安装Glance1. 安装# apt-get install glance python-glanceclient删除sqlite文件rm -f /var/lib/glance/glance. ...
- Linux如何开机自动运行自己的脚本
博客分类: LINUX 脚本LinuxCentOSWindowsBash 记录这个事情是上次完成之后,今天要新加一个文件夹,一时之间忘记以前怎么做了,因为有几种方法,起码我知道三种方法,这里 ...
- Swift 类构造器的使用
Swift 中构造器需要遵循的规则还是很多的, 总结一下, 有以下规则: 调用相关 指定构造器必须调用它直接父类的指定构造器方法. 便利构造器必须调用同一个类中定义的其它初始化方法. 便利构造器在最后 ...
- 5 给我们的c#程序添加注释
注释是你的程序中的一个重要部分.在程序中添加注释是用来告诉你和其他人你的程序是做什么用的,你的思路是怎样的.注释可以用你熟悉的中文进行添加. 当你想暂时把你程序中的某些语句去掉的时候,不需要把他们删除 ...
- sharepoint 2010 基于AD的Form验证
一.新建web应用程序 1.验证部分选择“基于声明的身份验证” 2.设置端口 3.选择“启用基于窗体的身份验证(FBA)” “ASP.NET 成员身份提供程序名称”下面填写“LdapMember” “ ...
- R 语言中文乱码问题
R 语言似乎在WINDOWS平台上对中文的支持不是特别好,似乎是3.1.2的一个BUG. 目前我研究出了一个临时解决方案,你可以将代码编写成一个函数,从而在调用的过程中不必如下繁琐: 1. 先将本地语 ...
- P1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
呵呵呵呵呵,很水的DP,同时能够朴素枚举出来,这数据弱的 是 吃了尸米吧.. var n,i,j,k,l,ans:longint; begin readln(n); to trunc(sqrt(n)) ...
- 邻接表实现Dijkstra算法以及DFS与BFS算法
//============================================================================ // Name : ListDijkstr ...
- C++中不可重载的5个运算符
大多数运算符都是可以重载的,但是有5个运算符C++语言规定是不可以重载的. 1. .(点运算符),通常用于去对象的成员,但是->(箭头运算符),是可以重载的 2.::(域运算符),即类名+域运算 ...