必威体育Betway必威体育官网
当前位置:首页 > IT技术

Swift中performSelector返回值的用法

时间:2019-11-08 05:13:24来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

performselector

最近使用swift,翻译OC的代码时,发现performSelector的返回值与OC中的用法相差很大。在OC中返回的是ID类型,而swift中返回的是 Unmanaged<AnyObject>! 类型,见下图。

在以前OC中,使用performSelector,直接接受返回值,然后转成需要的类型进行操作就可以了,但是在swift中是不行的,下面是按OC直接翻译成swift的代码,基本原理是target-action,由mediator发送消息给target,触发target的getPerson()方法,然后创建一个person对象,在外部获取这个person对象,并调用person的run()方法,具体代码及结果如下。

从以上代码可见,并没有想OC一样获得person对象,下面打断点来看一下,具体发生了什么事。

首先可以确定,通过performSelector的方法,有触发getPerson()方法,且返回了person对象。

但是,在外部接受时,这里的person并不是我们需要的person对象,而是一个Unmanaged<AnyObject>! 类型,且可以看在这个类型里面包含了person这个对象,然后我在playground上试验了一下,发现这个类型里面的value就是我需要的值

让我们来看看Unmanaged<AnyObject>! 是个什么东西

通过文档的字面意思理解,这东西应该是一个用来管理对象的东西,这里看到了有关于value的方法,然后改动一下代码,再看验证。

这样就拿到需要的person对象了。

但是,这事还没完,写这篇博客,其实还有一个原因,我在使用swift写target-action组件化中间件时,遇到了对象提前释放的问题,那么代码就需要这样写

如果是内存泄露,只要把retain改成release就可以了。

文章最后发布于: 2017-08-09 15:30:02

相关阅读

手机淘宝卖家中心在哪?

手机淘宝卖家中心在哪?现在很多人都在淘宝上面开店,淘宝店铺除了在电脑上面可以操作外电脑也是可以操作的。但是很多人不知道手机

Excel2007中工作表基本操作的功能使用

这篇是学习Excel2007系列经验的第二篇经验,具体讲的是Excel中进行工作表的操作,该如何去进行操作的呢?今天,seo实验室小编就教大家在

Windows 7 with SP1简体中文专业版(微软MSDN原版)

Windows 7 with SP1简体中文专业版(微软MSDN原版)32位版本:ed2k://|file|cn_windows_7_professional_with_sp1_vl_build_x86_dvd_u_6

Windows自动弹出MSN中文网界面解决办法

Windows自动弹出MSN中文网界面解决办法 原因:每当用户连接到网络时,Windows 会向微软的一个域名发送访问请求,访问结果作为网络连接

产品生命周期中,6个阶段的节奏把控

这次不谈用户体验,不谈情怀,不扯理想,好好谈谈产品节奏的把控。做产品经理久了就会很恐慌,大家都会谈几句互联网思维,都会说些对用户体

分享到:

栏目导航

推荐阅读

热门阅读