我是Swift的新手,我想知道是否有人可以帮助确认我在Apple的Swift中释放对象的理解?
CGPathCreateWithRect()
描述here的文档指出返回值为
“一条新的,不可改变的道路。你有责任释放这条道路 对象“。
什么时候说“你有责任”就像说当你不再持有引用时垃圾收集器将删除对象一样简单?即您负责管理参考文献?在哪种情况下 - 是不是很明显?如果不是 - 它是什么意思?
由于
拜伦
答案 0 :(得分:5)
您才有责任
内存管理对象
自动注释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中定义):[...]