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 > 10) {
      block(str);
    }
}

+ (void)initBlock11:(block1)block sum:(NSInteger)sum{
    NSString *str = @"返回字符串";
    if (sum > 10) {
        block(str);
    }
}

+ (void)initBlick2:(void (^)())block sum:(NSInteger)sum{

    if (sum > 10) {
        block();
    }

}

+ (void)initBlock22:(block2)block sum:(NSInteger)sum{

    if (sum > 10) {
        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:9];

        [block initBlock11:^(id obj) {
            NSLog(@"%@",obj);
        } sum:11];

        [block initBlick2:^{
            NSLog(@"block2");
        } sum:9];

        [block initBlick2:^{
            NSLog(@"block22");
        } sum:11];

        [block blockTest:^{
            NSLog(@"100");
        }];

        [block initBlock3:^NSInteger{
            return 10000000;
        } sum:10];
    }
    return 0;
}
时间: 2024-10-01 13:19:32

iOS block示例的相关文章

iOS block从零开始

iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void (^myBlock)(int a) = ^(int a){ NSLog(@"%zd",a); }; NSLog(@"旭宝爱吃鱼"); myBlock(999); 输出结果: 2016-05-03 11:27:18.571 block[5340:706252] 旭宝爱吃鱼

# iOS Block的本质(三)

iOS Block的本质(三) 上一篇文章iOS Block的本质(二)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block对对象变量的捕获,ARC 环境 block一般使用过程中都是对对象变量的捕获,那么对象变量的捕获同基本数据类型变量相同吗? 查看一下代码思考:当在block中访问的为对象类型时,对象什么时候会销毁? // ARC环境下代码 typedef void (^Block)(void); int main(int argc, const char *

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

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

iOS block并发

iOS block并发 2012-06-13 09:31 1351人阅读 评论(0) 收藏 举报 iosuiviewnetwork任务threadimage 这篇文章转自 http://anxonli.iteye.com/blog/1097777,集中与iOS的多核编程和内存管理,大家完全可以使用苹果的多核编程框架来写出更加responsive的应用. 多核运算 在iOS中concurrency编程的框架就是GCD(Grand Central Dispatch), GCD的使用非常简单.它把任务

(译)IOS block编程指南 1 介绍

Introduction(介绍) Block objects are a C-level syntactic and runtime feature. They are similar to standard C functions, but in addition to executable code they may also contain variable bindings to automatic (stack) or managed (heap) memory. A block ca

ios Block学习

ios block 回调传值,回调事件, 直接上代码 在firstVC里面的tableView 点击方法 ,里面点击跳到另一个nextVC,然后返回后的firstVC后回调值 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NextViewController *next=[[NextViewController alloc]init]; __block Nex

IOS block 教程&lt;转&gt;

http://pernghh.pixnet.net/blog/trackback/eac87d412e/33563409 本文来自台湾的某开发人员的博客,被墙,感觉讲的比较易懂,所以引过来.文字简体化了,原来是繁体,变数=变量,这个注意一下. 本章学习目标: 1. 了解何谓block. 2. 了解block的使用方法. Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容易了解,但是在iOS SDK 4.0之后,block几乎

iOS Block界面反向传值

在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C语言的扩展,用来实现匿名函数的特性.用维基百科的话来说,Block是Apple Inc.为C.C++以及Objective-C添加的特性,使得这些语言可以用类lambda表达式的语法来创建闭包.关于闭包,一句话解释简洁明了:闭包就是能够读取其它函数内部变量的函数. 在iOS开发中,Block有很多方面的用途,

iOS block 用法

1.定义Block /* 回传void ,参数也是void 的block*/ void (^blockReturningVoidWithVoidArgument)( void ); /* 回传整数,两个参数分别是整数和字元型态的block*/ int   (^blockReturningIntWithIntAndCharArguments)( int , char ); /* 回传void ,含有10 个block 的阵列,每个block 都有一个型态为整数的参数*/ void (^arrayO