下例中类似于'alert'的对象什么时候被释放?
func showMessage() {
let alert = NSAlert()
alert.beginSheetModalForWindow(self.view.window!, completionHandler: messageHandler)
}
它会在结束大括号之后立即销毁,还是可以像 Objective-C 一样添加到某个自动释放池中,然后再销毁?
最佳答案
当没有人持有对它们的引用时,对象将被销毁。
当您调用 beginSheetModalForWindow 时,警报将以模态方式显示在屏幕上,并且它将保留一个引用,直到调用完成处理程序后的某个时刻,警报从显示中移除。所以无需担心,也无需尝试持有另一个引用。
如果不调用 beginSheetModalForWindow,警报将在您的函数结束时消失。但是没有那个电话,那会很好。
关于快速堆栈变量处理/生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29918205/