快速堆栈变量处理/生命周期

标签 swift

下例中类似于'alert'的对象什么时候被释放?

 func showMessage() {
        let alert = NSAlert()
        alert.beginSheetModalForWindow(self.view.window!, completionHandler: messageHandler)
    }

它会在结束大括号之后立即销毁,还是可以像 Objective-C 一样添加到某个自动释放池中,然后再销毁?

最佳答案

当没有人持有对它们的引用时,对象将被销毁。

当您调用 beginSheetModalForWindow 时,警报将以模态方式显示在屏幕上,并且它将保留一个引用,直到调用完成处理程序后的某个时刻,警报从显示中移除。所以无需担心,也无需尝试持有另一个引用。

如果不调用 beginSheetModalForWindow,警报将在您的函数结束时消失。但是没有那个电话,那会很好。

关于快速堆栈变量处理/生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29918205/

相关文章:

ios - 进入后台时暂停WKWebView?

ios - TimeZone(缩写:) vs TimeZone(secondsFromGMT :)

ios - 如何使用swift语言创建json数据并将其发送到服务器

swift - 如何实现加载屏幕

ios - Stripe IOS SDK 不匹配 AllResponseFields?

ios - didUpdateLocations 方法未被调用

ios - 如何在swift中显示来自url的图像

ios - layoutIfNeeded 在 iOS10 上调用但在 iOS9 上不调用

ios - 如何在 Swift 中将字典传递给 Objective-C 方法

ios - RPScreenRecorder.shared().startCapture 不会写入/不断失败