OC第六课

iOS LiveCommunicationKit OC 实现 LiveCommunicationKit主要用于优化VoIP通话体验,适用于需要高质量语音通话功能的应用。类似的功能,允许应用程序设置为系统默认通话应用,但与CallKit不同的是,LiveCommunicationKit在锁屏状态下不会全屏弹出,也不会在。因为项目是OC版本的,所以进行了封装实现,目前已经实现OC版本,供大家使用。8.0.56版本就采用了LiveCommunicationKit接口,替换了原先的CallKit框架,以进一步提升语音通话体验‌。中引入的一个新框架,旨在优化。 阅读详情

主要内容:Block(Block语法、Block使用、Block实现数组排序)

一、Block语法

       Block:块语法、本质上是匿名函数(没有函数名称的函数),和函数指针很相似

       函数回顾:

               实现了某一功能的代码块的封装,(函数声明、函数定义、函数调用三步)

       函数指针回顾:

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

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

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

              函数指针变量:p,函数指针的值:sum

       Block:

       注意:

               1、最后的 “ ; ” 必须写

               2、参数的变量名不能省略

               3、block赋的值就是一个匿名函数

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

       Block语法:如图所示

           详解:

                   Block类型:int (^) int

                   Block变量:myblock      

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

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

二、Block的使用

       示例:

               写一个返回两个整型数据和的Block块

               int  (^sum) (int , int ) = ^(int  x ,  int  y) {

                         return   x + y ;

               }

               int  a = sum(20 , 10 ) ; / / 调用block函数


               写一个求最大值的block

               int  (^maxBlock) (int ,  int ) = ^(int  x , int  y){

                          return  x > y ? x : y ;

               }

               

       对block进行typedef

       typedef   int (^sumBlock) (int  x , int y) ;

                新类型:sumBlock

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

                等价与:sumBlock  ^sum2 = ^(int  x , int  y){

                                         return   x + y ;

                               }

三、block与局部变量和全局变量

       block块内部可以使用外部变量

       对于全局变量来说:可读可写

       对于局部变量来说:可读、不可写,如果想要改变局部变量的值,需要在局部变量前面前面加 __block 进行修饰

       示例:

               Block与局部变量







          Block与全局变量:



三、Block与数组排序

       示例:

              对Student对象排序

              Student  *stu1 = [ Student  StudentWithName : @"xiaoming" , age : 21 ] ;

              Student  *stu2 = [ Student  StudentWithName : @"" , age : ] ;

              NSMutableArray  *mu = [ NSMutableArray  arrayWithObjects : stu1 , stu2 , nil ] ; 

              mu  sortUsingcomparator : ^NSComparionResult(id obj1 , id  obj2){

                            if ( [obj1 getAge] > [obj2 getAge]) {

                                         return   NSOrderedDescending ; 

                            } else if ( [obj1  getAge] < [obj2  getAge] ) {

                                         return   NSOrderedAscending ;

                            } else {

                                         return   NSOrderedSame ;

                            }

              }

四、字面量

        字面量是一种新型的写法,能在一定程度上简化代码

        注意:字面量创建的对象是变量构造的,并且是不可变的



OC—基础语法 一、Objective-C语言简介 Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的。OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言。OC是Mac OS X系统和iOS系统的主要开发编程语言,当然马上要被Swift给替代了,然并卵,我们还是得好好学习OC,因为现在大多数公司还是使用OC来做iOS开发。 二、第一个OC程序... 阅读详情

相关推荐

iOS UMeng OC和Swift混编

设置Objective-C桥接文件导入SDK头文件在UMengDemo-Bridging-Header.h中加入U-Share SDK头文件://导入UMCommon的OC的头文件//导入UShare的OC的头文件//导入UMAnalytics的OC的头文件//导入UMPush的OC的头文件UMengDemo的OC和Swift的切换UMengDemo是用OC的代码编写的,同时也兼容了swift3.0的调用示例(UMengDemo不再对swift2.0做示例兼容).

2501_90230875的博客 1701

【IOS】对象数组排序最简单的方式

一个数组内是对象类型.想根据对象内的属性进行排序. 很多人第一想到的是利用谓词.其实数组自带了一个更简便的方法便于我们进行排序 - (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0); 举例. 定义一个 Person 对象 @interface Person : NSObject @

雨影的博客 770

oc调用swift

OC调用Swift 如果你想在Objective-C工程中,嵌入Swift文件,实现OC调用Swift,那么这篇文章就能帮助你,由于本人最近在开发Swift项目,所以实现过OC调用Swift,在这过程中遇到过一些瓶颈,特此,将此文奉上,供大家参考。 OC调用Swift文件,需要创建桥接头文件,这个文件是当你在OC开发环境中创建Swift文件时由Xcode生成,该桥接头文件的命名是:-B

Xiao_Long_Li的专栏 2136

iOS开发 ☞ 数组常用方法

一、排序NSArray *array = @[@"aaa",@"zsa",@"Ba",@"zsaa"]; NSArray *sortArr = [array sortedArrayUsingSelector:@selector(compare:)]; [sortArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger

Magic-ZYJ的博客 3141

【WILEY】从Revision到Online:逐层拆解投稿状态更新与关键文件提交实战

本文详细解析了学术论文从返修到在线发表的全过程,重点拆解了投稿系统状态更新背后的含义与应对策略。文章提供了返修稿与回复信的准备技巧、关键补充文件(如图文摘要)的提交要点,并分享了校对校样与处理出版协议的实战经验,帮助作者高效、专业地完成发表流程。

weixin_29209805的博客 713

【博客汇总】UV打印机博客汇总

UV平板机博客汇总

Print World的专栏 1739

关于OC中的几种数组排序方法

NSArray *arr = @[@(7),@(17),@(6),@(19),@(11),@(15),@(2),@(9)];1)sortedArrayUsingComparator是不可变数组的排序方法,它有一个数组类型的返回值,它对数组进行排序,将排序的结果以一个新的数组返回,它的返回值是NSArray arr = [arr sortedArrayUsingComparator:^NSCom

hannibal_zj 's blog 5203

企业华为TaurusDB数据库国产替代要点全记录

国产化数据库全方位对比、从互联网企业的先进经验来看mysql的用法、及sql优化、sql异构修改、及数据同步方面都做了一些讲解

深耕互联网的码农,在AI及国产化浪潮下,希望把自己的能力输出给更多的人 1063

拼音 名字 排序 a-z的比较 ( sortUsingComparator )

NSMutableArray * array = [NSMutableArrayarrayWithObjects:@"ad",@"az",@"ac",@"ab",@"aa", nil]; DLog("ar :: %@",array); [array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {...

321

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 763

三相逆变器拓扑结构的分析及应用场景

三相逆变器是电力电子领域中广泛应用的一种设备,用于将直流电转换为交流电。不同的拓扑结构在性能、成本、复杂度和应用领域上存在差异。小编将在本文中将进一步拓展对三相逆变器拓扑结构的分析,并探讨其适用的应用场景。

道合顺的博客 2235

Objective—C中的排序及Compare陷阱

campare陷阱 NSString有多个compare相关方法: - (NSComparisonResult)compare:(NSString *)string; - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask; - (NSComparisonResult)com

u011883764的专栏 4120

MoveIt 运动学、运动规划、混合规划、move_group

混合规划是运动规划方法的一个术语,它将异构运动规划器结合起来,以产生更稳健或反应更快的解决方案。这种通用方法在导航领域已经非常成熟,并在导航2等流行项目中成功实施。MoveIt 的混合规划架构结合了一对全局规划器和局部规划器,它们以不同的规划速度和问题范围并行、并发运行。全局规划器的任务是解决全局运动规划问题,这与 “感知-规划-行动 ”应用中使用的规划器非常相似。所使用的规划器算法应该是完整的,因此假定其计算时间相对较慢。此外,全局规划器不要求实时安全,这意味着无法保证规划器在特定期限内找到解决方案。

机器人控制与仿真应用 2131

oc语言第六课 类目与协议——iOS学习连载11

oc语言第六课 类目与协议

liuhuidan的博客 314

10倍开发者的 Dify 魔法书:从零构建全栈 AI 应用

“不懂底层算法,也能开发爆款 AI 应用吗?” 答案是:绝对可以。 Dify 正在重新定义 AI 应用的开发范式——通过可视化的低代码平台,将原本需要数周的开发周期压缩到几小时。无论你是前端、后端、产品经理,还是渴望破局的独立开发者,这都是你不可错过的红利。 我们将手把手教你利用 Dify 快速接入百模大战,零代码搭建企业级知识库,并一键发布你的专属 AI 助手、智能客服和自动化工作流。 告别重复造轮子,掌握 Dify,一个人就是一支 AI 团队。现在上车,开启你的 10 倍速开发之旅!

davidwang456的专栏 682

解决gradle下载慢的问题

allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。buildScript块的repositories主要是为了Gradle脚本自身的执行,获取脚本依赖插件。根级别的repositories主要是为了当前项目提供所需依赖包。慢的问题在于下载时链接的是官网,而官网下载速度太慢;1、解决gradle不同版本下载慢的问题。但是这个镜像站的版本不全,低版本可以用;有公司做的国内镜像站;

weixin_42551921的博客 2051

Open Catalyst Project数据集全解析:OC20/OC22/OC25有何不同

你是否在催化剂研究中遇到过数据集选择困难?面对OC20、OC22和OC25等多个版本,不知道它们之间的区别和适用场景?本文将详细解析这三个数据集的核心差异、技术特点和应用场景,帮助你快速选择适合自己研究需求的催化剂机器学习数据集。读完本文后,你将能够:区分不同数据集的结构特征、了解它们的技术参数差异、掌握各自的适用场景,并学会如何获取和使用这些数据集。 ## 数据集概述与核心差异 Open C...

gitblog_00055的博客 1626

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

15、OC与Swift的混编

在使用Swift进行iOS开发的过程中,经常涉及到Swift与OC混编的情况,有时主工程是OC的需要另外编入Swift代码,而有时主工程是Swift的需要另外编入OC代码。这其中涉及到修改一下XCode的工程配置。 1、在同一个工程中的混编 在Swift 5.1中,两种混编的实现步骤: Swift访问OC:只需要在桥接文件(ProductName-Bridging-Header.h)中导入需要暴露给Swift的OC类,即可在Swift中访问相应OC类及方法。 OC访问Swift:在OC类中导入Pro

重楼的博客 3583

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[科普] GLONASS现代化:新民用CDMA信号L1OC、L2OC与L3OC详解

俄罗斯GLONASS系统正通过引入新一代民用CDMA信号实现现代化升级。目前已部署L3OC信号(1202.025 MHz),采用BPSK(10)调制和I/Q正交复用结构,提供宽带宽和高精度;部分卫星已测试播发L2OC信号(1248.060 MHz),形成双频优势;计划中的L1OC信号(1600.995 MHz)将采用BOC(1,1)调制。这些新信号显著提升了系统性能,改善了与其他GNSS系统的兼容性,为高精度应用提供支持。随着GLONASS-K2等新一代卫星的发射,系统将实现从FDMA到CDMA的全面转型。

极客不孤独的博客 1611

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OC 基础入门

OC 语法基础 OC 的语法知识其实有蛮多,以下知识基础的一部分. 目录部分: 文章目录 @ 符号 在 OC 语言中,绝大部分的关键字使用的@符号开头。记住这是一个规则就好了。 字符串 在 Java 中字符串和 C 语言中字符串定义的方式是一样的。 但是在 OC 中的字符串的定义是需要添加 @ 的,在OC 中字符串类型使用的是 NSString ,相对而言添加一个 NS 前缀。 Java: "Android" "Java" OC: @"OC" @"iOS" //比如定...

秋天的博客 2807

OC和Swift混编相互调用

现在咱们就一起学习下 OC和Swift混编,如何实现呢? 首先创建一个OC项目 这里不在做详细解释,直接进入 打开项目; 一 、添加swift 文件 (只要是混编 无论是在oc项目中添加swift文件 ,还是swift项目中添加oc文件) 会提示添加一个桥文件 名字为oc_swift-Bridging-Header.h下面都用这个名字(如图) 这个时候 我们只需要点击确定即可; 这个桥文件是用来添加 swift使用oc的时候导入头文件使用的 扩充 — 这个文件oc_swift-Bridging-Head

哈皮吖的博客 5468

iOS JS与OC交互

iOS JS与OC交互 1、UIWebView 与 JS 交互 UIWebView 在 iOS12 中已经被废弃,同时WKWebView在iOS8中已经出现。所以无特殊情况的话,我们一般应该也是用不到前者了! UIWebView 初始化: self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; self.webView.delegate = self; [self.view addSubview:self.

kangpp的博客 2978

IOS 07 Swift调用OC源码及OC第三方框架

创建SwiftUseOCTest项目,是一个Swift语言的项目;再创建一个OC类文件,里面有静态方法,实例方法,字段等;然后在Swift项目中调用OC类;像OC类的复杂宏,在Swift类中是无法调用。

sziitjin的博客 1831

oc怎么添加win引导_OC透明贴图

写在前面透明贴图在C4D中经常会用到,比如在物体上贴个图形,如下图所示,这个在默认渲染器中操作比较简单,切换到OC中,有的小伙伴会有些懵圈,所以写了这篇文章(使用OC3.07),希望对大家有所帮助,笔芯。OC中实现透明贴图,涉及到图像纹理节点,下面先梳理相关的知识。OC节点编辑器OC中一个个节点可以看成一个个暗盒,它有两类端口,左侧输入端:输入指令,右侧输出端:输出结果,输入端可有多...

weixin_39834488的博客 2820

催化剂数据集终极指南:OC20/OC22/OC25深度对比与实战应用

面对催化剂机器学习研究中众多的数据集选择,你是否感到困惑?OC20、OC22、OC25这三个核心数据集各有侧重,选择错误可能让你的研究事倍功半。本文将为你提供从基础认知到深度应用的完整解决方案。 ### 数据集速查表:快速定位你的需求 | 应用场景 | 推荐数据集 | 核心优势 | 技术门槛 | |---------|------------|----------|----------| |

gitblog_00457的博客 1122

OC- OC数值类型、NSNumber、NSString、NSMutableString

今天我们主要讲oc的数据类型,说起数据类型,大家可能会想到C语言的数据类型,如:int ,float……,当然我们的OC也有数据类型。那OC的数据类型是怎么分的呢? OC数据类型 我们在OC阶段通常叫数值类型。 oc的数值类型主要分为两种:typedef类型和对象类型;以常用数据类型为例,C和OC数值类型的对比如下: 结构体类型 NSPoint… 我们先看看typedefy的结构体类型,

gaoya7305的博客 2994
上一篇: OC第五课
下一篇: OC第七课
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值