前言 何为协议,简单来说在OC中我们使用关键字@protocol可以声明一个协议,并在协议中添加多个属性、方法供于遵循者实现,从某个角度上来说,这是一种不同于category机制的category。在日常开发中,协议可谓无处不在,最为核心的UITableView通过协议来获取数据、完成事件处理等。下面就是一个最粗浅的协议 @protocol CustomProtocol -
# iOS 协议作为属性 在iOS开发中,我们经常会使用协议来定义一组方法,以实现类之间的通信和解耦。而有时候,我们希望在一个类中使用另一个类的协议来实现特定功能。这时,我们就可以将协议作为属性来实现这个需求。 ## 为什么要将协议作为属性 将协议作为属性的好处在于可以动态地指定实现这个协议的对象。这样一来,我们就可以在运行时根据需要来切换不同的实现,而不需要修改类的代码。这种灵活性使得我们
原创 4月前
20阅读
# 如何在iOS中使用协议作为参数 作为一名经验丰富的开发者,你在这篇文章中将指导一位刚入行的小白如何在iOS中使用协议作为参数。以下是整个流程的步骤概述: | 步骤 | 描述 | | --- | --- | | 1 | 创建一个协议 | | 2 | 创建一个类并遵循该协议 | | 3 | 在另一个类中使用协议作为参数 | 接下来,让我们按照这些步骤一步一步地实现。 ## 步骤1:创建一个
原创 2023-09-12 15:56:09
84阅读
C++函数本身是可以作为参数传入函数的。 1.函数作为形参的语法格式函数类型 (*自定义变量名)(形参1,形参2,...)在这种情况下一定要加指针,加括号。 例1:void foo(void (*func)(int),int j) { func(j); }其中void (*func)(int)为传入的函数形参。 2.传入的实参的语法格式 a)例2:void printnumber(int
# iOS中的block作为参数传递 在iOS开发中,我们经常需要将一段代码片段作为参数传递给其他函数或方法,这样可以使代码更加灵活和可复用。在Objective-C和Swift中,我们可以使用block来实现这个功能。本文将介绍block在iOS中的使用,并且通过代码示例来展示block作为参数传递的用法。 ## 什么是block? 在Objective-C和Swift中,block是一种
# 科普:iOS上传数组作为参数iOS开发中,我们经常会遇到需要将数组作为参数传递给服务器的情况,比如上传用户选择的图片数组或者其他数据。本文将介绍如何在iOS应用中上传数组作为参数,并提供代码示例帮助读者理解这一过程。 ## HTTP请求 在进行网络请求时,常用的方式是通过HTTP协议与服务器进行通信。在iOS开发中,我们可以使用`NSURLSession`类来发送网络请求。下面是一个
原创 6月前
29阅读
iOS中的block是一种特殊的对象,它可以作为函数的参数传递。在开发iOS应用程序时,我们经常会遇到需要使用block作为函数参数的情况。本文将对iOS中block作为函数参数的使用进行科普,并通过代码示例来说明其用法和好处。 ## 什么是block? 在Objective-C中,block是一种特殊的对象,它可以封装一段代码并在需要的时候执行。与函数类似,block也可以接收参数并返回值。
原创 9月前
151阅读
# 在 iOS Swift 中使用 Block 作为参数 在 Swift 开发中,“Block” 通常被称为“闭包(Closure)”。闭包是一种自包含的代码块,可以在代码中被传递和使用。像在函数中作为参数传递闭包可以很大程度上提高代码的灵活性,今天我们将详细探讨如何实现这一点。 ## 整体流程 以下是使用 Swift 闭作为参数的整体流程: ```mermaid flowchart TD
原创 9天前
10阅读
# iOS将地址作为参数的应用详解 在iOS开发中,地址作为参数的传递是一种常见的编程技巧。这种方式可以简化数据传递的过程,尤其是在需要跨函数传递数据时。本文将以代码示例和流程图的形式深入探讨如何在iOS中实现这一技术,同时会介绍应用场景和一些最佳实践。 ## 什么是地址传递 在程序中,我们处理的数据类型通常有两种:值类型和值类型。这两种类型在内存中的表现形式有所不同。值类型的实质是在传递时
原创 1月前
24阅读
个人总结了一下函数的参数在传递时的应用情况,如有不足或者错误,请大家帮忙指出。1、函数参数的传递方式函数参数的传递方式主要为值传递和地址传递,其中地址传递方式有可以分为引用传递和指针传递。(1)值传递方式值传递方式只将实参的值的副本传递给形参,函数内的逻辑只对形参进行而不影响实参。函数执行完后会销毁栈,此时形参也被释放,实参不受任何影响。对于内置类型:由于其所占大小有限,可以采取这种方式;对于类对
// 声明 typedef void (^completion)(int intCount, int intSize); void (^completion)(int intCount, int intSize) = ^(int intCount, int intSize) {   // Logic Handle }; // [instance doSomething:completion]
转载 2023-07-03 10:58:31
81阅读
void与void*详解 void 无类型    void* 无类型指针 可以指向任意类型的数据。void: 1.函数没有返回值,声明为void类型 2.函数无参数。 3.函数的参数可以是任意类型的指针  void*。 【void真正发挥的作用在于】: 1) 对函数返回的限定;(2) 对函数参数的限定。  例如: float *p1; int *p2; p1 =
一 闭包是什么一个函数和对其周围状态的引用捆绑在一起,这样的组合就是闭包。 也就是说 闭包可以让你在一个内层函数中访问到其外层函数的作用域。在Javascript中,每当创建一个函数,闭包就会在函数创建的同时被创建出来,作为函数内部与外部连接一起的一座桥梁。简单举个例子const init = () => { const name = 'aaa'; // name 是一个被init创
  代码块,我的理解就是匿名方法,有点像Java中的匿名类一样,似乎用更贴切的说法叫闭包,一个我至今未接触过的东西。学习到代码块和代码块对象(Proc)的时候,看着很晕,一个代码块对象可以用lambda和->同时定义,与对代码块的错误理解纠结在一起,晕了一晚上。今天早上又找了些资料看看,最终才弄懂。写这篇文章的时候,使用的Ruby是1.9.2   Block和P
1、delegate与block一般用于1对1的通信交互。delegate需先定义好协议方法,代理对象实现协议方法且需要建立代理关系才可以通信。2、block使用简洁,如果通信事件较多,建议使用delegate。3、Notification主要用于1对多的通信。且对象之间不需要建立关系。使用Notification代码可读性较差。扩展:1、delegate解除两个通信对象的耦合度;
转载 2023-07-03 11:03:59
66阅读
一.概念 这里说的协议是什么? 在两个计算端点之间建立或控制连接、通信或数据传输的约定或标准 协议设计解决的问题是? 1)     序列化/反序列化 2)     判断包的完整性 只要解决了这2个问题,2个不同机器的进程就能完成通信。 协议设计的目标是? 解析效率:互联网业务具有高并发的特点,解析效率决
swift5学习之旅----代理通知block的使用工程文件(全是button类型的调用)Github还没上传,先用着Dropbox(可能要翻墙),看完有收获的感谢点个赞?,如果翻不了墙要代码可以私聊我 https://www.dropbox.com/sh/wbo7lwpphi8ibn9/AAAWxUOj0PRKDlTNfpPz_A11a?dl=0dropbox代理通知block的使用Protoc
#iOS底层原理 - Block本质探究本质block 本质是一个OC对象,也存在 isa 指针。或者说Block 是封装了函数调用和函数调用环境的OC对象。1.底层实现编写一段最简单的OC代码顶一个block,代码如:int main(int argc, const char * argv[]) { @autoreleasepool { int abc = 10086;
原创 2023-05-22 15:42:50
257阅读
  BLE 技术是 Bluetooth SIG 规定的一套通信协议, 在协议变成具体的代码之前, 都只存在文档中, TI、 Nordic、 CSR 等厂商, 根据 SIG 发布的 BLE 技术协议, 配合自身的芯片开发了一整套源码, 并且这套源码经过了 SIG 的测试, 服务 BLE 协议。 这套源码就叫做协议栈, 协议栈是协议的实现。 不同的芯片厂商都有各自的协议栈, 而这不同的协议栈, Blu
之前写管理系统,后端获取的数据都是微信的数据,要在管理系统显示,性别是sex:1或者2,每次拿过来都还要替换一下才能放到formdata。多页面的话要写很多次for循环,所以打算自己写个函数去调用,但是如果你要取这个数组第i个的某个对象属性你就发现这个属性无法作为参数传递,所以就用到了[]运算符封装函数//for循环数据替换.arr=数组,prop=数组第i个的属性名,a对比数据,b替换数据,c=
转载 2023-07-06 21:43:14
118阅读
  • 1
  • 2
  • 3
  • 4
  • 5