OC中Block语法、Block使用以及通过Block实现数组排序

oc学习之旅:NSArray分割,排序,Block 字符串分割 单个分割         NSString * str = @"adadhbdj,dfaslkdsafj,fdsakfasdkf,dddddd,eeeee,1234,2345,";         NSArray * arr = [str componentsSeparatedByString:@","];         NSLog(@"%@",arr); 阅读详情

Block:语法块,本质上是匿名函数(没有名称的函数)

标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数

在C++、JS、Swift等语言有类似语法,叫做闭包

Block语法和C语言里的函数指针很相似,下面我们先来回顾下C语言中的函数和函数指针

C语言中函数是指:实现某一功能的代码段

完整的函数包括两部分:函数声明、函数定义

函数声明,即函数原型。例如:int sum (int x,int y);具有两个整形参数,一个整形返回值的函数

函数定义,即函数实现。例如:int sum(int x,int y){

return x + y;

}

函数指针(变量):存放函数地址(函数名)的指针变量

int(*p)(int x,int )= sum;

函数指针类型:int(*)(int x,int y)即:指向两个整形参数,一个整形返回值函数的指针

函数指针变量:p

函数指针的值:sum

Block 匿名函数:没有名称的函数

例如:int (int x,int y)

因为Block是匿名函数,block变量存放的函数的实现,通过block变量能直接调用函数

Block类型:int (^)(int)

Block变量:myBlock

Block值:^int (int num) {return 7*num;}

即:^返回值类型(参数列表){函数体}其中返回值类型可以省略

例如:写一个 返回值为整形 参数为OC字符串(仅一个参数)的block,实现将字符串转换为整形的功能

 int (^myBlock)(NSString *) = ^(NSString *string) {

        return [string intValue];

    };
   
NSLog(@"%d",myBlock(@"123"
));

block的数据类型代表了匿名函数的格式(返回值类型,形参的类型)

block变量的定义与函数指针变量的定义类似,唯一区别于函数指针变量的是变量名前通过脱字符(^)修饰

首先应该用^修饰,剩余的部分与C语言函数定义一致,最大的不同就是没有函数名(同时返回值类型也可以省略)

block变量在定义时具有变量定义的基本特征,赋值号右侧的匿名函数可以当做一个整体被赋值,类似于 int a = 5;

block变量所赋的值是匿名函数。又兼具函数的特征,并且是唯一可以定义在某个函数实现内部(C语言中认为函数是不能嵌套定义的,block是个特例)

Block进行typedef

typedef int (^BlockType)(int x,int y)

原类型:int(^)(int x,int y)

新类型:BlockType

类比函数指针的类型定义,格式与函数指针一致,类型定义一定程度上简化了block的使用。

    typedef int (^SumType)(int,int);
   
SumType sumBlock = ^(int x,int y) {
       
return x + y;
    };
   
int result = sumBlock(5,4);
   
NSLog(@"%d",result);


 __block类型标识可以运行局部变量在其后续定义的block内部正常访问,

    __block int num = 0;

   
void (^testBlock)() = ^() {
       
for (int i = 0; i < 10; i++) {
           
count++;
            num++;
           
NSLog(@"%d",count);
        }

    };

block调用

    testBlock();



数组使用Block排序

wKioL1UqGiPDUkyYAANks9a0cIk801.jpg

数组使用Block对两个字符串进行比较

    NSComparisonResult (^compareBlock)(NSString *,NSString *) = ^(NSString *str1,NSString *str2) {

        return [str2 compare:str1];

//如果是升序返回-1,如果是降序返回1,如果相等返回0

    };

    NSLog(@"%ld",compareBlock(@"11",@"12"));

wKiom1UqGPSwvf-FAALsAUNY_gs586.jpg


    NSArray *array = @[@1,@2,@13,@12,@23];
   
NSArray *resultArray1 = [array sortedArrayUsingSelector:@selector(compare:)];
   
NSLog(@"%@",resultArray1);


数组使用Block排序    降序排列


   NSComparator sortBlock = ^(id obj1,id obj2) {

        return [obj2 compare:obj1];
    };
   
NSArray *resultArray2 = [array sortedArrayUsingComparator:sortBlock];
   
NSLog(@"%@",resultArray2);


升序序排列

   NSArray *resultArray3 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

        return [obj1 compare:obj2];

    }];

    NSLog(@"%@",resultArray3);















本文出自 “Running2snail” 博客,请务必保留此出处http://496668219.blog.51cto.com/9922692/1631499

HFSS学习笔记——Vivaldi天线仿真(一) Vivaldi 天线HFSS仿真,HFSS中指数曲线绘制及曲面绘制。 阅读详情

相关推荐

西电微机系统课程设计——步进电机开环控制系统设计

西电微机系统课程设计——步进电机开环控制系统设计 一、课程设计目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。 三、系统功能与设计要求 基本功能要求 手

OutlierLi's Blog 7524

OC之Block块,以及对数组进行排序

Block本质上是匿名函数(没有名称的函数), 标准C里面没有Block. //int (^)(int x, int y) block变量的类型 //block -- block变量的名字 //^(int x, int y) //{ // return x + y; //} ---- block变量的初值,bl

u013360565的专栏 506

IEEE Access 上岸指南,附含泪整理的 cover letter 、沟通邮件、终版文档等资料包

终于上岸了! 我是一个小硕,本科期间发表过两篇水文,奈何学校有更高的毕业要求,只能硬着头皮尝试一下 SCI。 想投 IEEE Access 的朋友都应该知道 小木虫论坛 对这个期刊的讨论,褒贬不一,有的人说是大水刊,有的人说有难度。 比如: @wow_: 不可否认,灌水期刊。只要之前中过一篇,再投基本没有不录用的!我们实验室其他老师说过一区除外的收费期刊都应该禁止灌水。 @pssp: 审稿人还...

kurryluo的博客 1万+

OC:Block语法、Block使用、Block实现数组排序

Block //定义一个求两个数最大值函数 int maxValue (int ,int); //函数的实现 int maxValue (int a, int b){ return a > b ? a : b; } //函数指针 (调用可以用 p 或者 maxValue) int (* p)(int,int) = maxVal...

weixin_30586257的博客 181

IOPaint模型部署教程

IOPaint是一款功能全面且强大的AI图像处理工具,它不仅免费开源,还由SOTA(State-of-the-Art,即最先进)AI模型驱动,为图像编辑和修复带来了前所未有的便利和高效。以下是对IOPaint的详细介绍:

SJJS_1的博客 1540

Arduino安装图文教程:小白也能轻松上手

手把手带你完成Arduino安装全过程,无论你是编程新手还是硬件小白,都能快速搭建开发环境。结合arduino安装教程与实操步骤,避开常见错误,让创作即刻启程。

weixin_35509395的博客 1107

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

1.Block定义 Block:块语法,本质上是匿名函数(没有名称的函数) 标准C⾥里⾯面没有Block,C语言的后期扩展版本,加入了匿名函 数。 C++、JS、Swift等语⾔言,有类似语法,叫做闭包。 Block语法和函数指针很相似。 转载于:https://www.cnblogs.com/wudemingiOS/p/4522757.html...

weixin_30451709的博客 95

CamoFox MCP:让AI助手隐身操作浏览器的反检测自动化实战

浏览器自动化是提升工作效率和实现数据采集的关键技术,其核心原理在于通过程序脚本模拟人类在网页上的交互行为。传统方案如Selenium或Playwright虽功能强大,但需要开发者编写复杂脚本并处理反爬机制。随着AI Agent技术的发展,自然语言驱动的自动化成为新趋势,它能将任务规划与逻辑判断交由AI处理,大幅降低使用门槛。Model Context Protocol(MCP)作为连接AI与外部工具的标准协议,在此场景下价值凸显,它使得AI助手能直接调用丰富的浏览器操作工具。CamoFox MCP创新性地将

weixin_42551967的博客 726

OC 排序

大体上,OC中常用的数组排序有以下几种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors:。 1、简单排序(sortedArrayUsingSelector:) 如果只是对字符串的排序,可以利用sortedArrayUsingSelector:方法就可以了,代码如下 //...

weixin_30727835的博客 111

harbor x509: certificate signed by unknown authority【20251222】

本教程通过「合并证书链(服务器端)+ 预置根 CA(客户端)」彻底解决了自签名证书的 x509 错误,同时集成了 Trivy 漏洞扫描,实现了 Harbor 从搭建到实用的全流程。证书链合并是服务器端的关键,确保客户端获取完整信任路径;客户端需同时配置「系统信任库 + Docker 信任目录」,避免 Docker 独立信任机制导致的问题;所有 IP 需保持一致(Harbor 配置、证书绑定、客户端访问),是避免错误的基础。

老韩的Linux云计算架构师进阶之路 681

Python爬虫应对Cloudflare防护:5秒盾+Turnstile验证码实战(AST反混淆+指纹模拟,成功率95%)

Cloudflare 5秒盾+Turnstile验证码的防护核心,是通过“前端JS挑战+多维度指纹校验”确认请求来源的真实性。用AST反混淆还原CF的验证逻辑,避免执行无用代码导致的验证失败;基于真实浏览器采集指纹,确保指纹维度100%匹配真人环境;结合轻量级JS引擎和自动化工具,模拟完整的浏览器执行环境。该方案的绕过成功率可达95%(剩余5%主要是IP或请求频率导致的风控),适用于绝大多数部署CF防护的网站。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1717

OC中数组排序的3种方法

总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上,OC中常用的数组排序有以下几种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescript...

weixin_30894583的博客 538

【AI智能体】Coze 打通MySql实现数据报表展示应用搭建详解

Coze 打通MySql实现数据报表展示应用搭建详解

congge 3857

OC 基础之----- Block和语法糖

本文只是对 Block语法的简单介绍.其实 Block语法在 OC 中是比较重要的,后期还会学习Block的高级知识. 语法糖是对集合和字符串操作的简化,有助于我们快速对字符串和集合进行操作. 一 Block的语法 1.    Block 的语法跟函数指针的语法差不多. 2.    Block 块语法,可以用 block 去保存一段代码,或者说是去封装一段代码. 3.    Bloc

lifang30的博客 630

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

总结OC中数组排序3种方法

大体上,OC中常用的数组排序有以下几种方法:sortedArrayUsingSelector:; sortedArrayUsingComparator:; sortedArrayUsingDescriptors:

u013819306的专栏 850

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OC数组排序的基本方法

OC中数组排序的三中方法:sortedArrayUsingSelector: sortedArrayUsingComparator: sortedArrayUsingDescriptors: 一,简单排序(sortedArrayUsingSelector:) 如果只是对字符串的排序,可以利用sortedArrayUsingSelector:方法就可以,代码如下void sortArray(){

qq_22792789的专栏 719

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OC中的排序方法

OC中常用的数组排序有以下几种方法: sortedArrayUsingSelector:; sortedArrayUsingComparator:; sortedArrayUsingDescriptors: 1、简单排序(sortedArrayUsingSelector:) 如果只是对字符串的排序,可以利用sortedArrayUsingSelector:方法就可

人最大的对手,就是自己的懒惰!不奋斗就只有平庸。 823

OC数组中按照对象属性的排序方法

大体上,OC中常用的数组排序有以下几种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors:。 1、简单排序(sortedArrayUsingSelector:) 如果只是对字符串的排序,可以利用sortedArrayUsingSelector:方法就可以了,代码

523

OC 对象数组排序方法分析

常用方法1: 简单排序:sortedArrayUsingSelector:           // 这就是一个方法名,包括冒号,调用这个方法的对象必须是 NSArray 对象。 实际调用代码: int main() {          NSArray *array = [NSArray arrayWithObjects:@"abc",@"156",@"163",@"789",

364

iOS 开发OC语言(六) Block语法简介

iOS 开发OC语言(六) Block语法简介

Carry_FeiKer的博客 676

【iOS安全】Block开发与逆向

【iOS安全】Block开发与逆向

Juruo@Security 2004

OC总结——block语法

OC总结—block语法

767

OC中的Block,多态

首先我们来找一下每个区域内的内存地址 栈 int a=10; NSLog(@"%p",&a); //堆 int *p=malloc(40); NSLog(@"%p",p); //全局静态区 static int b=10; NSLog(@"%p",&b); //常量区 //常量字符串,保存的是首地址 char *str="ip

Zhang_dy_blog的博客 381

oc中block的定义和使用

//block的定义 //1.无返回值, 无参数的block写法 //声明了一个 void(^)(void) 类型的 变量 block //    int a = 0; void (^block)(void) = ^(void){         NSLog(@"block的值");     }; //black变量的使用 block(); /

yt_30的专栏 1139

OC学习之道:关于Block的初级学习

// //  main.m //  Copyright (c) 2015年 tongxing. All rights reserved. // #import #import "Student.h" typedef int(^BlockType)(int,int); int globalVariable = 200; int main(int argc, const char * argv[]

朝夕 969

Objective-C中Block语法、Block使用以及通过Block实现数组排序

Block:语法块,本质上是匿名函数(没有名称的函数) 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数 在C++、JS、Swift等语言有类似语法,叫做闭包 Block语法和C语言里的函数指针很相似,下面我们先来回顾下C语言中的函数和函数指针 C语言中函数是指:实现某一功能的代码段 完整的函数包括两部分:函数声明、函数定义 函数声明,即函数原型。例如:int sum(...

weixin_33769207的博客 121
上一篇: OC中NSDictionary、NSSet得常用方法
下一篇: 浅析Objective-C字面量
RunningSnail2
博客等级 码龄12年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值