首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

iOS开发:Block的运用

前言 在iOS开发中是一个非常经典的方法,有六种方式:属性、代理、Block、方法、单例、通知。本章就来分享一下通过Block完成两个不同界面间的操作。...那么接下来通过实际应用场景,来直观的演示一下用Block的操作,具体如下所示。...实例场景是在控制器A里面点击按钮进入到控制器B中,控制器B里面是一个单元格界面,每一个列表对应的三个参数,需要选中其中想要的列表然后返回并到控制器A里面,这就是整个使用场景的描述,接下来是具体实现的代码步骤...animated:YES]; histoyVC.Complate = ^(NSString *temp, NSString *time, NSString *water) { //Block的三个参数给控制器...nil];         [self.tableView reloadData]; // 数据加载完成之后刷新tableview     } } 3.png 这就是通过Block进行的一个简单传操作

80641

iOS开发之通过代理逆向

iOS开发中,是几乎每个App都会用到的,对于传统的顺向应该说是比较简单的,但是逆向往往会用到代理模式来实现,很多同学在这一块有迷惑,迷惑的不是怎么逆向,而是不理解代理模式,下面就来分析一下...,如何理解和快速上手代理模式,并以一个简单的逆向为案例,看看代理模式是不是很难。...被代理对象 1、定义协议,在协议中定义方法用于什么类型的就设置什么类型的参数 2、声明一个遵守上述协议的delegate属性 3、在需要的时候调用代理对象完成 代理对象 1、遵守被代理对象定义的协议...2、实现协议中的方法,捕获传过来的,并根据需求来处理捕获的 设置被代理对象的delegate属性为代理对象 这一步是在上述两个对象的其中一个里面完成的 三、代理模式与逆向 通过如上描述可以看出...逆向.gif

69750

iOS开发之利用Block逆向

iOS开发之通过代理逆向一文中,分析了利用代理模式来逆向,其实还有一些其他的方式,如通知、Block等,相比较代理,我个人认为反而要简单些,但是需要处理好细节问题,如Block循环引用。...一、书写规范 Block,需要注意的是,谁就需要定义Block,捕获方仅仅需要传递Block给方,并处理捕获的。...方 1、定义Block用于 2、声明一个上述Block属性,这个属性的具体实现需要捕获方进来 3、在需要的时候调用Block完成 捕获方 1、传递一个Block给方 2、...在Block中捕获传过来的,并根据需求处理捕获的 二、Block与逆向 还是那句No Code, No BB,案例效果如下: ?...逆向.gif 三、实现步骤 1、方 //.h 文件 /** * 类型自定义 */ typedef void (^ReturnValueBlock) (NSString *strValue

77570

iOS 开发】Controller 之间使用代理

Controller 控制器之间经常需要互相传递,第一个控制器(简称 MasterVC)在通过 NavigationController Push 第二个控制器(简称 DetailVC)的时候,...而 DetailVC 在给 MasterVC 传递的时候,比如设定 MasterVC 的 Title,却不能用同样的方式(试一下就知道了),而且因为我们要通过 NavigationController...返回原来的界面而不是 push 一个新的界面,所以也不能通过 segue ,解决方法我尝试了两种: 使用 static var 使用代理 使用 static var class MasterVC...DetailVC 以代理作为桥梁,来调用 MasterVC 里面的 setControllerTitle(text:String) 方法,而 MasterVC 只需要遵守一个相应的协议...popViewControllerAnimated(true) } } 相比之前的方法,我们获得的额外的好处是:假如我们传递的不只是字符串,而是大量的信息,比如十个不同类型的,使用代理依然只需要实现一个方法

1K20

往期文章 【JS ES6】const var let 一文搞懂声明关键字所有的知识点 目录 什么是  例  址 什么是址 例  ---- 什么是 let a = 1; let...b = a; console.log(a, b); //1 1 是获取一份儿相同的,并自身重新开一份儿属于自己的内存地址,两个变量是互相独立的并不会互相影响。  ...例  let a = 1; let b = a; b = 2; console.log(a); console.log(b); 修改了b的,a的不会受到影响,这就是,两者是独立的存在,引用内存比较小的引用赋值一般都是...址 什么是址 let a = { name: "xiaoxie", }; let b = a; console.log(a, b); 是获取一份儿相同的,不会自身重新开一份儿属于自己的内存地址...两者使用同一个内存地址,一般引用占用内存较大的变量时,会址,比如对象和数组。

2.6K20

址与

这里将讲述址与的区别,先见下图。 这是的过程,我们明明把a,b作为实参传过去了。可以看到,交换后的a,b并没有达到我们的预期。为什么会这样呢?...其实是因为,的时候,形参是临时创建的,在执行完swap函数后,他们又自动销毁了,从而导致a,b的并没有交换。如果想要改变实参的,我们就需要进行址,而不是。...见下图 我们通过把a和b的地址传给了形参,形参就能通过地址,找到a,b,以此来改变a和b的。此时我们的实参就改为&a和&b,注意swap函数的形参类型是int*,这样就能交换a与b的啦。...总结::形参是实参的一份拷贝,函数运行起来后,实参是实参,形参和实参没有任何关联,改变形参时,不会对实参造成影响。            ...址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此,对形参解引用后的内容进行修改,改变的就是实参。

8510

地址

很多语言在参的时候都有一个地址(或者是引用)的问题,我想用 C++ 语言来简单的描述一下。...因为我觉得无论是还是址,C 或者 C++ 这两种语言都是能够比较直观的描述清楚的语言,原因是可以容易的去观察内存。其他语言也可能可以,只是其他语言的我不太知道如何去做。...对于第一段和第二段代码在 C++ 中称为,对于第三段和第四段代码在 C++ 中称为地址。地址和在内存中本身都是一个,只是具体分类是做了区别而已。...NO.6 Java 参 Java 中说的参全部是,但是当形参是一个对象的时候,其实相当于的是一个地址。因为变量中本身就保存的是一个地址,而不是一个。...参时,也是把堆空间的地址传给了形参。Java 的堆和栈,是由 JVM 管理和维护。 End

2.3K40
领券