Block --- 块语法

block 块语法.  --- 匿名函数

block可以在函数内部定义匿名函数.

blocK -- 实现两个数的最大值.

函数:

#import <Foundation/Foundation.h>
#import "Person.h"
//1.输出I love ios
void output() {
    printf("I love ios\n");
}
//2.求两个数的最大
 int maxValue(int x, int y) {
     return x > y ? x : y;
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {

//方法一:直接打印
        output();

        int max = maxValue(2, 5);
        printf("max = %d", max);

//方法二:定义指针变量
        void (*p)() = NULL;
        p  = output; //指针指向对应的函数;
        p();

        int (*p)(int, int) = NULL;
        p = maxValue;
        int max =  p(2, 5);
        printf("max = %d", max);

//方法三:函数重命名(打印多个同类型,会比较方便)
        typedef int (*PFUN)(int, int);  //将函数类型重命名为PFUN
        PFUN p1 = NULL;
        p1 = maxValue;
        int max = p1(2, 5);
        printf("max = %d", max);
 //第四种方法 --- block
 int (^max)(int, int) = ^int(int a, int b) {
            return a > b ? a : b;
        };
        //如何调用block块
       int value = max(4, 6);
        printf("value = %d", value);

Block ----  块语法

时间: 2024-10-08 16:25:25

Block --- 块语法的相关文章

【学习ios之路:Objective-C】block块语法.NSDate和NSDateFormatter

一.Block块语法 块语法:可以在函数内部定义匿名函数 格式: ^返回值类型(参数列表){函数体}其中返回值类型可以省略 block简单练习: ①.求两个数的最大值 //int (^)(int,int)//block类型 int (^max)(int,int) = ^(int a,int b) {//block的实现体 return a > b ? a : b; }; int value = max(4,6);          printf("%d",value); ②.将一

浅析ios开发中Block块语法的妙用

事实上,任何一个应用的开发都离开多线程.而"块"block与GCD就是苹果OC语言中多线程的核心. 一.块的内部结构 在oc中,块语法以闭包的形式存在,每一个Objective-C对象都占据着某个内存区域.块本身也是一个对象,在存放块的对象内存区域中,首个变量是指向Class的指针,该指针叫做isa.其余内存里含有块对象正常运转所需的各种信息. 以下是块语法的内部结构变量. 1.void*                                   isa(指向class的对象

第六讲 Block块语法及Block与数组的排序,ios字面量的使用(源代码上传)

1 #import <Foundation/Foundation.h> 2 3 4 #import "Student.h" 5 6 int c =200; 7 int main(int argc, const char * argv[]) { 8 @autoreleasepool { 9 /* 10 ------------------------------------- 11 定义block变量的四种方法 12 -----------------------------

【Objective-C基础知识-12】OC语法特性 -- 块语法

一.基本概念 Block:块语法,本质上是匿名函数(没有名称的函数),苹果推荐的类型,效率高,用来封装和保存代码,BLOCK可以在任何时候执行. 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数,C++.JS.Swift等语言,有类似语法,叫做闭包. Block语法和函数指针很相似. Block和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. Block就是一个匿名函数,它是OC对于闭包的实现,在块状中我们可以持有或引用局部变量,同时利用Block你

iOS之block块

Block块. 1.声明Block int (^myBlock)(int n) = ^(int num) 类型 (^名称)(需要传的参数)= ^(参数) 2 __block 变量 在block块中修改block块外部变量的值,只有将外部的变量前面加_ _(两个短杠才能修改) 3 __weak 变量 在ARC机制下,如果block中应用控制器对象或者其实例变量,block会对其强引用,导致拷贝一份控制器对象从而造成内存泄露.为了避免这一问题,则需要: __weak typeof(self)weak

Linux内核系列之Block块层(一)

.Block块层入口函数为 genhd_device_init(),先对该函数开始分析: 函数实现源码: static int __init genhd_device_init(void) {     bdev_map = kobj_map_init(base_probe, &block_subsys_lock);     blk_dev_init();     subsystem_register(&block_subsys);     return 0; }   .kobj_map_i

ARC中block块作为属性的使用笔记

ARC中block块作为属性的使用笔记 block较难理解,根据在内存中的分布情况就分为3种类型,根据使用的情形又分为很多很多种.虽然用起来容易,但使用不当会造成内存泄露,虽然都是这么说,但你真的研究过为什么会泄露吗?为什么有些时候外部变量进入block的时候会导致引用计数+1呢? 本人做过MRC以及ARC的开发,但大势所趋,ARC将是以后开发的主要模式,即使有MRC也是ARC混编MRC的代码,所以,本文的block的一些使用上的心得都基于ARC的,已经不考虑MRC的了,请看官注意,MRC与AR

Objective-c中的Block(块)详解

Block初探 在Objective-c中NSArray是很常用的容器之一,很多时候我们需要对数组中的数据进行排序,因此与下面类似的代码会经常碰到: NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) { if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending

「ios」block块中使用self

[问题现象] 在block块中使用self时报警告:self strongly in this block is likely to lead to a retain cycle [问题解决] __block ViewController *blockSelf = self;_block = ^{ [blockSelf->_items addObject:@"Hello!"];};