oc block基本使用

//
//  main.m
//  block基本使用
//
//  Created by Ymmmsick on 15/7/21.
//  Copyright (c) 2015年 Ymmmsick. All rights reserved.
//

#import <Foundation/Foundation.h>
typedef int (^IntBlock)() ;
typedef void (^VoidBlock)();

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"这个哥修改过的模版!");

        //没有行参,没有返回值的block
        void (^testBlock)() = ^ {
            NSLog(@"Block---->Test");
            NSLog(@"Block---->Test");
        };

        testBlock();

        //有行参有返回值的block
        int (^sumBlock)(int,int) = ^(int a,int b){
            return a+b;
        };
        NSLog(@"sum is :%d",sumBlock(10,12));

        //typedef
        IntBlock productBlock = ^(int a,int b){
            return a * b;
        };
        NSLog(@"product is :%d",productBlock(10,10));

        /*
         Block访问外部变量
         1.block内部可以访问外部的变量
         2.默认情况下,block不能修改外部的变量
         3.外部变量添加__block关键字,block内部就可以修改外部的变量
         */

        __block int a = 0;
        VoidBlock areaBlock = ^{
            a = 10;
            NSLog(@"a = %d",a);
        };
        areaBlock();
    }
    return 0;
}
时间: 2024-12-19 07:30:18

oc block基本使用的相关文章

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

oc block 遍历数组及字典

原遍历数组NSArray * lines = ...for (NSString * line in lines) { // ...}for (int i = 0; i < lines.count; ++i) { NSString * s = [lines objectAtIndex:i]; ...} 原遍历字典 NSDictionary * dict = … NSArray * keys = [dict allKeys]; for (NSString * key in keys) { NSStr

Objective-C—— Block

OC Block 其实功能就类似C语言的函数指针,js中的闭包之类的.把代码块当做一个变量就行操作,有自己的变量和作用域. 简单看一下Block的语法和可能出现的问题: Block语法: block语法相对宽松,很多部分都可以省略,常规上我们实现一个block需要有以下几个部分 ^ 返回值类型 参数列表 表达式 例如 ^int (int count){return count+1;};//返回值为int 参数为int 表达式为 count+1; ^void (void){NSLog(@"void

oc 代码块的使用

#import <UIKit/UIKit.h> #import "AppDelegate.h" int (^max)(int,int);//定义代码块,类似c的函数指针 typedef void (^SayHello)(); //指定一个类型的代码块: int main(int argc, char * argv[]) { //通过函数闭包的方式实现代码块 max=^(int a,int b){ return a>b?a:b; }; //调用代码块 printf(&q

Objective-C 基础之— Block本质+源码剖析

block 又称之为"自带变量的匿名函数",抛开OC语法定义block的形式不谈,其实好多语言都有类似的函数,比如JS的回调函数(其实就是将一个匿名还是作为函数的实参).swift的闭包等等.. 首先讲一下oc block的实质,通过自身的理解,加以各位大神的剖析文章.block 在编译时期会被编译成结构体,也就是说OC的block底层是使用C语言结构体实现的, 和对象.类的实现是一样的(所以其实block就是OC中的一个对象),这个结构体包括两个结构体成员变量和一个构造函数,我们都知

说说JavaScriptCore

http://www.jianshu.com/p/1328e15416f3/comments/1724404 javascript目前看来仍是世界上最流行的语言,不管在web.服务端还是客户端都有广泛的应用,很多跨平台方案也采用js来实现,比如著名的reactjs,苹果在iOS7引入了javascriptcore库,提供更简单方便的方式将js接入,iOS7之前要执行js操作只能通过UIWebview中的stringByEvaluatingJavaScriptFromString方法,而且Java

Closures闭包

//: Playground - noun: a place where people can play import UIKit /* 闭包 Swift ====> Closures Ruby OC ====> Block Python C++11 ====> Lamba Javescript =====> Anonymous Function(匿名函数) */ //冒泡排序 func sortInts(inout data : [Int], function : (Int,In

Swift开发语法

Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者工具部门总监 Chris Lattner(克里斯·拉特纳) 开始着手 Swift 编程语言的设计工作 用一年时间,完成基本架构 Swift 大约历经 4 年的开发期,2014 年 6 月发表 克里斯·拉特纳 ) 特色 苹果宣称 Swift 的特点是:快速.现代.安全.互动,而且明显优于 Object

vim代码格式化插件clang-format

title: vim代码格式化插件clang-format date: 2017-12-12 20:28:26 tags: vim categories: 开发工具 安装vim-clang-format插件 项目地址: vim-clang-format 如果用Vundle管理vim插件,直接在.vimrc中添加一行 Plugin 'vim-clang-format' 运行:PluginInstall就可以自动安装插件 "配置 let g:clang_format#auto_format_on_i