Swift 2.0引入了一个新关键字:延迟
使用此关键字的正确方法是什么?我应该注意什么?
由于swift使用ARC,因此内存管理通常会自动处理。因此,对于使用传统低级别/非弧级调用的情况,只需要调用延迟进行内存管理,对吗?
其他情况包括文件访问,我想。在这些情况下,延迟将用于关闭"文件指针"。
什么时候应该使用我在iOS / OSX开发的真实世界"(tm)中使用延迟。当使用它时是个坏主意。
答案 0 :(得分:8)
正确使用defer
关键字属于快速do
,try
,catch
块。 defer
语句中的过程将始终在退出do
,try
,catch
块的范围之前执行。通常,这用于清理,例如关闭IO。
do {
// will always execute before exiting scope
defer {
// some cleanup operation
}
// Try a operation that throws
let myVar = try someThrowableOperation()
} catch {
// error handling
}
答案 1 :(得分:2)
defer
,fopen
读取和写入文件, getline
会很好用。然后,您可以确保在所有情况下使用dealloc
,free
,fclose
正确清理。
let buffSize: Int = 1024
var buf = UnsafeMutablePointer<Int8>.alloc(buffSize)
var file = fopen ("file.txt", "w+")
defer {
buf.dealloc(buffSize)
fclose(file)
}
// read and write to file and and buffer down here