在Swift中释放对象

时间:2016-01-08 09:47:10

标签: ios swift

我是Swift的新手,我想知道是否有人可以帮助确认我在Apple的Swift中释放对象的理解?

CGPathCreateWithRect()描述here的文档指出返回值为

  

“一条新的,不可改变的道路。你有责任释放这条道路   对象“。

什么时候说“你有责任”就像说当你不再持有引用时垃圾收集器将删除对象一样简单?即您负责管理参考文献?在哪种情况下 - 是不是很明显?如果不是 - 它是什么意思?

由于

拜伦

3 个答案:

答案 0 :(得分:5)

只有在使用Objective-C

时,

您才有责任

来自Swift documentation

  

内存管理对象

     

自动注释API返回的Core Foundation对象   在Swift中管理的内存 - 你不需要调用CFRetain,   CFRelease或CFAutorelease自己发挥作用。

答案 1 :(得分:1)

iOS中没有垃圾收集。请参阅memory management上的苹果文档和ARC的概念,以便更好地理解评论和范式转换。

另外,在Swift中你不需要使用它。您可以创建一个实际对象,并将包含的CGPathRef传递给可能需要它的任何低级函数。

答案 2 :(得分:0)

您应该从WWDC 2011中查看ARC视频。它们可以在开发者网站上找到并通过iTunes打开。特别是:

  

•会话323 - 自动参考计数简介

     

•会议322--深度目标C进展

此外,ARC参考文献指出:
http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html

参考笔记和视频都讨论了Core Graphics(等)以及它们如何与ARC协同工作。

具体来说,请看“管理免费电话桥接”一节

  

在许多Cocoa应用程序中,您需要使用Core Foundation风格   对象,无论是来自Core Foundation框架本身(例如   CFArrayRef或CFMutableDictionaryRef)或来自采用的框架   核心基础约定,如Core Graphics (您可能会使用   类似CGColorSpaceRef和CGGradientRef)。

     

编译器不会自动管理Core的生命周期   基础对象;你必须打电话给CFRetain和CFRelease(或者   相应的类型特定的变体)由核心指示   基础内存管理规则(请参阅内存管理编程   核心基金会指南)。

     

如果您在Objective-C和Core Foundation风格的对象之间进行投射,那么   需要告诉编译器有关对象的所有权语义   使用强制转换(在objc / runtime.h中定义)或核心   基础风格的宏(在NSObject.h中定义):[...]