OC-Block语法

 1 //
 2 //  main.m
 3 //  BlockTest
 4 //
 5 //  Created by LiuChanghong on 15/9/25.
 6 //  Copyright © 2015年 LiuChanghong. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13
14         void(^block1)(void) = ^(void){
15             NSLog(@"block1——无返回值无参数");
16         };
17
18         void(^block2)(int,int) = ^(int x,int y){
19             NSLog(@"block2——无返回值有参数 %d + %d = %d",x,y,x+y);
20         };
21
22         int(^block3)(void) = ^(void){
23             NSLog(@"block3——有返回值无参数");
24             return 0;
25         };
26
27         int(^block4)(int,int) = ^(int x,int y){
28             NSLog(@"block4——有返回值有参数");
29             return x + y;
30         };
31
32         block1();
33         block2(3,8);
34         block3();
35         block4(4,9);
36
37     }
38     return 0;
39 }

输出结果

block 与变量的关系

  • block 与 局部变量的关系
int temp = 100;

void (^blockTest)(void) = ^(void){
    NSLog(@"%d",temp++);//会报错
    NSLog(@"%d",temp+1);
};

第一行NSLog会报错,第二行不会报错,因为temp++相当于temp = temp + 1,然而block默认不能修改局部变量的值。

__block int temp = 100;

void (^blockTest)(void) = ^(void){
    NSLog(@"%d",temp++);//不会报错
    NSLog(@"%d",temp+1);
};

如果局部变量 temp 在声明时用 __block 进行修饰,blockTest内就能够修改它的值了。

注意:block可以直接修改全局变量。

时间: 2024-10-12 21:30:25

OC-Block语法的相关文章

OC --(6)-- Block、数组高级:Block语法、Block使用、Block实现数组排序

1.Block定义 Block:块语法,本质上是匿名函数(没有名称的函数) 标准C?里?面没有Block,C语言的后期扩展版本,加入了匿名函 数. C++.JS.Swift等语?言,有类似语法,叫做闭包. Block语法和函数指针很相似.

iOS开发——面试篇&amp;OC基本语法总结(面试)

OC基本语法总结(面试) C和OC对比 OC中主要开发在什么平台上的应用程序? 答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头? 答:OC中新增关键字大部分是以@开头 OC中新增加了那些数据类型? 答: Block类型 指针类型(Class, id类型) 空类型 特殊类型(SEL, nil) 面向对象特性是什么? 答:继承性,封装性,多态性 import和#include有什么区别? 答:import 的功能和 include一样, 是将右边的

OC点语法和变量作用域

OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age;//默认为@protected 6 } 7 8 - (void)setAge:(int)age; 9 - (int)age; 10 11 @end Person类的实现: 1 #import "Person.h" 2 3 @imp

[Objective-c 基础 - 2.2] OC弱语法、类方法

A.OC弱语法 1.在运行的时候才会检查方法的声明和实现 2.没有声明只有实现的方法也能正常运行,只要在调用之前定义即可 3.类的声明必须存在,否则会出现运行时错误 B.类方法 1.是类名调用的方法 2.使用加号修饰的方法 3.类方法和对象方法可以重名 4.对象方法和类方法都允许多次声明,都不允许多次定义 5.类方法不能访问实例变量 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 - (void) t

【黑马程序员】————OC特有语法

一.点语法 点语法的本质还是方法调用 p.age = 10; // [p setAge:10]; int a = p.age; // [p age]; 二.成员变量的作用域 @public : 在任何地方都能直接访问对象的成员变量 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private) @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected) @package : 只要处在

obj-c8[block语法]

Block语法  块语法,本质上是匿名函数(没有名称的函数)C++.JS.Swift等语言,有类似语法,叫做闭包 //Block 的作用,主要是用于回调函数,解耦合 //当方法的参数是block类型,block的参数用户从内向外传值;block的返回值,用于,从外向内返回结果 #import <Foundation/Foundation.h> #import "XunleiDownload.h" #import "LoginManager.h" #imp

从C语言的变量声明到Objective-C中的Block语法转载]

原文:From C Declarators to Objective-C Blocks Syntax 作者:Nils Hayat 译者:CocoaChina--sunshine 在这篇文章中,从简单的C语言中各种声明开始,以及复杂的声明组合,到最后Objective-C中的代码块bokck的语法. 花一些时间去了解代码块(block)衍生和组织形式,一旦明白了这些,就可以很方便的声明和使用它,而不用每次需要的时候才去Google一下. 如果你想把能想到的东西用block声明表现出来,请继续阅读!

OC中语法糖,最新语法总结

<span style="font-size:24px;"> 1.方法与顺序无关 2.枚举绑定数据类型 enum { ObjectiveC, Java, Ruby, Python, Erlang }; typedef NSUInteger Language; 3. 属性不用写@synthesize 4.语法简化 4.1 NSNumber NSNumber *value; value = @12345; value = @123.45f; value = @123.45; v

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

黑马程序员—OC点语法和成员变量作用域

一.点语法 1.OC中点语法是方便从事别的语言开发的程序员迅速的转到OC开发当中,先看下面这个例子: 1 // 声明一个Person类 2 @interface Person : NSObject 3 { 4 int _age; 5 NSString *_name; 6 } 7 - (void)setAge:(int)age; 8 - (int)age; 9 @end 10 11 // 实现Person类 12 @implementation Person 13 - (void)setAge:(