反向传值的几种常用方法-创新互联

    最近项目完成的差不多了,闲下来的时间突然心血来潮想自己写写以前没用过的方法。这里就包含了几种常见的反向传值的方法。

创新互联是专业的聊城网站建设公司,聊城接单;提供成都网站制作、成都做网站、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行聊城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

        之所以现在专门自己写反向传值的博文记录,是因为之前几乎没怎么用到这些反向传值的方法,那么这里将会描述一下像“代理”、“block”、“通知”、“单例”这四种传值方法。

        首先是代理,也就是常看到的delegate。说的通俗点,就是委托一个对象,让其帮忙处理事情,说到底就是个中介的标志。详细方案如下:

反向传值的几种常用方法

在父类中调用其代理并传递参数

反向传值的几种常用方法

自定义代理的写法

                反向传值的几种常用方法

                                                            最后在代理中实现代理方法

        看得出来,只需要三步就可以完成一个代理的设置以及调用,既简单又方便,难怪会成为开发人员最钟爱的传值方法。再来是block的传值,可以说这个的地位跟代理是不相伯仲的,来看看它的写法:

反向传值的几种常用方法

反向传值的几种常用方法

          首先根据需要自定义一个block(参数自己决定,这里用耽搁字符串举例),设置为类的一个属性

反向传值的几种常用方法

                                                        然后在需要的地方把参数传进去

反向传值的几种常用方法

                               最后直接在需要的地方调用这个block,取出其中的数据即可

        没错,利用block进行传值一样只需要三步就能完成,同样既简洁又方便,而且省去设置代理和协议的设置,直接把自己作为代理对象,可谓简单粗暴,这也是为什么block这个写法看上去有点怪异的东西这么受开发者种爱的原因了。

        接下来是通知传值,这个是敝人经常用到的传值方法,说起来有点low,没办法,自己之前对其他的一些方法没花时间琢磨,而通知传值在我看来比较“方便”,所以一直沿用到现在。方法也不是很复杂:

反向传值的几种常用方法

注册一个观察者用于接受到通知后调用回调方法

反向传值的几种常用方法

在需要的方法发送包含数据的通知(可以是字典,这里直接用单一个字符串举例)

反向传值的几种常用方法

                                                                最后响应通知回调方法即可

        仍然只需要三步,仍然非常简洁方便,跟代理类似,注册观察者即为设置代理,通知回调即为代理方法,只是传递的参数类型统一为(NSNotification *),处理起来可能要麻烦几步。 这里要注意的是,只有预先注册了观察者的地方,才会在发送完通知后启用回调方法,而且每个通知的回调也只有一次。就像广播,只播送一次,听到的人才会有反馈。看上去很美好,实际上是用起来比较麻烦,因为你要自己在需要的地方把数据存储到相应的通知中,当数据量大的时候一般会选用字典来存储,会比较麻烦,回调的方法也需要自己来写,所以在开放过程中用到的几率不是很高,当然的,还是要清楚用法哟。

        最后是单例传值,我记得当初教我的老师就提到过这是他最喜欢用的一种传值方法。同样贴上使用步骤:

反向传值的几种常用方法

.h文件中的写法

反向传值的几种常用方法

.m文件中实现单例的创建方法,把需要初始化的属性记得初始化一下

反向传值的几种常用方法

反向传值的几种常用方法

                                                    引入单例,保存数据到单例对象的属性中

反向传值的几种常用方法

                                最后在需要用到地方拿出单例对象,取出它的属性进行使用即可

        满打满算也差不多是三步,这么看基本上这几种方法好像步骤都很简单啊~老实说我看着也是简单,但是实际上你得想清楚,在使用单例传值时,你不得不单独的去创建.h和.m文件,而这个单例可能只用到某一个地方,那一般的项目中需要反向传值的地方是很多的,如果每个地方都用单例,就有可能会要创建很多的单例对象的文件,想想也是麻烦,因为不能像代理和block那样直接写到对应的类里面,总归来说还是比较麻烦的,所以这种方法也是看到的比较少。

        以上提到的四种传值方法并不只是针对反向的,而是反向传值中常用的,像没有提到的偏好设置等也是可以用来传值的,这里就不说了。总结来说,几种方法都是不错的,各有各的受众面,一般来说,在对象不多的文件里推荐用单例即可实现各文件的无障碍传值,而相对的传值频繁而且对象复杂的文件里则推荐代理和block,至于通知的话并没有比前2种更好,由你自己取舍啰~

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:反向传值的几种常用方法-创新互联
URL网址:http://myzitong.com/article/ccohej.html