美文网首页
takeUnretainedValue与takeRetained

takeUnretainedValue与takeRetained

作者: ksnowlv | 来源:发表于2018-06-29 15:54 被阅读213次

swift中,如果我们使用perform相关函数时,例如

 if let object = connectionItem.perform(connectionSEL, with: nil) {
                    (object as! YKURLConnection).cancel()
 }

此时会报警告

 Cast from 'Unmanaged<AnyObject>' to unrelated type 'YKURLConnection' always fails

虽然代码可以正常运行,报这种警告,也是让人心理很不爽。

如何解决呢?使用Unmanaged<anyobject>的takeUnretainedValue()即可解决。

查了下文档

1.takeUnretainedValue

Gets the value of this unmanaged reference as a managed reference without consuming an unbalanced retain of it. This is useful when a function returns an unmanaged reference and you know that you’re not responsible for releasing the result. Returns The object referenced by this Unmanaged instance.

2.takeRetainedValue

Gets the value of this unmanaged reference as a managed reference and consumes an unbalanced retain of it. This is useful when a function returns an unmanaged reference and you know that you’re responsible for releasing the result. Returns The object referenced by this Unmanaged instance.

3.区别

  • takeUnretainedValue不需要负责对象的释放。
  • takeRetainedValue需要调用者负责对象的释放,通常是一些copy/create产生的对象,

也可看下stackoverflow上一些解释

相关文章

  • takeUnretainedValue与takeRetained

    swift中,如果我们使用perform相关函数时,例如 此时会报警告 虽然代码可以正常运行,报这种警告,也是让人...

  • && 与& ,||与|

    回忆知识点i++,,++i变量在前 先用变量符号(☞++/--)在前 先计算

  • 认真与身板

    认真与身板 认真与态度 认真与自信 认真与信心 认真与诚心 认真与正心 认真与正念 认真与正面 认真与精诚 认真与...

  • 与荒野,与你,与自己

    周末了,想跟大家分享一首诗 《阿莱夫》 诗作者:赖尔逊 阿莱夫在草原上盖了一栋房子, 犹如大海上的灯塔。 但你无法...

  • 与雪与丘与故土

  • 与海与浪与念

    木君 下午,在一段段风雨的催促下来到了绥中。天是被蒙起来的,太阳早已不知躲到哪里去了。微弱的日光和着轻柔的海风洒在...

  • 晚风与柳 孤独与狗 桥与落叶 马与白隙 云与苍天 梭与星月 天与地 生与死 树与来路 花与过往 我与你 爱与恨 夜色与酒

  • 海街日记

    和解。与他人和解、与家人和解、与自己和解;与得到和解、与失去和解;与过去和解、与现在、未来和解;与现实和解、与虚幻...

  • 生怕忘了的题目

    少与不少 多与不多 苦与不苦 乐与不乐 对与不对 错与不错 离与不离 合与不合 唱与不唱 说与不说

  • 2017-04-11

    体验入:真诚.与专业。幽默与风趣。赞美与了解。认可与相信。沟通与关注。关心与引领。快乐与持续。简单与重复。 ...

网友评论

      本文标题:takeUnretainedValue与takeRetained

      本文链接:https://www.haomeiwen.com/subject/tkpayftx.html