首页 > 其他分享 >IOS block学习笔记

IOS block学习笔记

时间:2023-05-07 22:03:29浏览次数:51  
标签:int IOS 笔记 char myBlock block multiplier Block


天天看别人的block,各种羡慕嫉妒恨。狠下心来 自己也玩玩block,看看这水深不深。

Block 声明格式:

 

 

int (^personBlock)(int,int)
Block 定义格式
  

  
}

   例: ^int(int num1,int num2){return num1+num2;}


Block 还有另外一种不同的定义方法。 以 ^ 符号起始,后面跟随着参数,这里的参数必须有参数名, 还必须和它要赋值到的 Block 声明中参数列表里面的参数类型和顺序相匹配。下面是实际的代码。

示例:^(int num1,int num2){return num1+num2;}

声明和定义结合起来就是 苹果官方的例子:

int multiplier = 7;
int (^myBlock)(int) = ^(int num){
    
}

此时 multiplier的值是不可变的,如果想在 block里对 multiplier进行改变,则需要 前面加上 __block (两个下划线)

Block 本身的调用方法 与 函数的调用方法基本类似 例 int result= myBlock(4);

__block int multiplier = 7;
 int (^myBlock)(int) = ^(int num){
    
}

Block 可以直接作为参数传递,就像一个内联函数 

     

qsort_b(myCharacters, 3, sizeof(char *), ^(const void *l, const void *r) {
               char *left = *(char **)l;   
               char *right = *(char **)r;  
               return strncmp(left, right, 1);

         

调试:

你可以在blocks中设断点并单步跟踪. 你也可以在GDB里直接用 invoke-block命令调用blocks,如下所示:


1. invoke-block myBlock 10 20



this string  传给  doSomethingWithString  block, 得这么写:


1. invoke-block doSomethingWithString "\"this string\""

标签:int,IOS,笔记,char,myBlock,block,multiplier,Block
From: https://blog.51cto.com/u_548275/6252614

相关文章

  • IOS6.0 应用内直接下载程序&n…
    闲来没事看了篇文章应用内创建应用商店环境,不跳转AppStore.先武断的想一句:放屁。然后好奇的进去看看,原来是IOS6.0的新特性,顿感惭愧。研究下SKStoreProductViewController类是UIViewController的子类,如果你对viewcontroller比较熟悉的话,那SKStoreProductViewController使用起来......
  • 读书笔记
    《Core.Software.Security.Security.at.the.Source.CN.软件安全.从源头开始》第一章引论软件安全的重要性和相关性软件是我们在现实世界中做任何事情的关键,同时,软件也分布在最关键的系统中,基于此,软件的安全设计是直观重要的。为了证明一个软件安全程序的合理性,必须知晓没有构......
  • Vulkan学习笔记之开发环境搭建
    一、概述最近因为工作需要开始学习Vulkan的相关知识,作为初学者,发现相对较好的学习资料莫过于vulkan-tutorial,在自己学习Vulkan的过程中,决定将自己的理解记录下来,一是为了加深记忆,二是为了分享给大家一起探讨学习,因此有了本系列文章,开发环境搭建是本系列文章的第一篇。二、开发环......
  • OpenGL学习笔记-1:菜鸟入门基础
    一、什么是OpenGL?OpenGL是我们用来操作图形图片等所使用的API,但是其本身并不是API,而是KhronosGroup开发维护的一个规范。Opengl定义了每个函数的入参和出参,具体实现的细节大多数是由显卡厂商完成。二、OpenGL的两种模式OpenGL有两种模式:(1)immediatemode 立即渲......
  • DC-1 find提权/sql数据库创建用户(个人笔记)
    进入数据库select*fromusers\G;\G为了让界面看着更整洁 在exploitdb中有一个针对Drupal7版本的攻击脚本,可以增加一个admin权限的用户账号:终端/msf输入:searchsploitdrupalpython2/usr/share/exploitdb/exploits/php/webapps/34992.py-thttp://url-uadmin3-pad......
  • .NET 6学习笔记(8)生成自签证书
    上一篇我们通过导出IISExpress的自签证书,供ASP.NETCore程序启用HTTPS。本篇我们讨论如何生成自签证书。自签证书的生成,有多种方式。比如OpenSSL或PowerShell都可以通过命令生成证书。对于.NET程序,也有System.Security.Cryptography.X509Certificates命名空间下,对应的C#类来实现......
  • Spring复习笔记
    Spring架构核心概念IOC&DIIOCDIbeanbean的实例化......
  • mall学习笔记(2)
    1.Spring注解:代替xml配置文件2.@Autowired:修饰成员变量进行依赖注入Couldnotautowire.Nobeansof‘xxx”typefound(三种方法)3. mybatisexamle类:进行sql查询等操作4.swagger使用配置Swagger2Config添加@ApiOperation("")打开http://localhost:8080/swagger-ui.......
  • Python数据分析与挖掘实战笔记
    (声明:这些代码只是看书的时候跟着敲一敲,留个印象,为的是以后用到有个方便快速查找看个思路,并没有真正运行。)数据挖掘建模过程数据挖掘建模过程:定义挖掘目标:明确挖掘目标,弄清用户需求。数据采样:采样标准(相关性、可靠性、有效性)采样方法:随机、分层、等距数据探索:进行探索......
  • 阅读笔记:Merak 大模型并行训练系统
    论文简介Merak:AnEfficientDistributedDNNTrainingFrameworkWithAutomated3DParallelismforGiantFoundationModels这篇论文发表在IEEETPDS2023上,主题是提出一种高效的具有三维并行性的自动化分布式训练系统-Merak。论文背景和Motivation3维并行训练即将数据并......