未正确退出应用程序时未关闭 OutputStream 文件

Posted

技术标签:

【中文标题】未正确退出应用程序时未关闭 OutputStream 文件【英文标题】:Not closing OutputStream file when not exiting App properly 【发布时间】:2017-11-07 20:24:37 【问题描述】:

例如: 如果在应用程序进入后台并且(例如)从 Xcode 运行时关闭了到文件的 OutputStream,或者如果应用程序崩溃并且 OutputStream 永远不会关闭。

任何可能的泄漏?当运行循环终止时,进程是否终止?

也就是说,不关闭一个OutputStream会不会导致超出App生命范围的系统泄漏?

【问题讨论】:

【参考方案1】:

我假设您引用的是 NSOutputStream 或其系列 NSStreams。

如果您的应用程序被杀死,您为什么会有“泄漏”甚至关心泄漏?流就像文件句柄,与您的进程相关联。关于进入后台的应用程序,流可能会变得陈旧,但您应该收到一条消息 streamError 给您的代表

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode

您可以在此处查看文档 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Streams/Articles/WritingOutputStreams.html

【讨论】:

谢谢!是的,OutputStream 是 Obj-C 的 NSOutputStream 的 Swift 等价物。文档没有提到不关闭流的后果。

以上是关于未正确退出应用程序时未关闭 OutputStream 文件的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 在关闭/退出时未清除 SESSION COOKIES

Bootstrap 4 模态在隐藏时未正确关闭

鼠标退出按钮时未触发 MouseExited

退出时未调用Angular AuthGuard CanActivate - Firebase Auth

使用 kivy 和 python 返回屏幕管理器时未设置焦点

应用程序退出时未调用 FirebaseMessagingService onMessageReceived(不在后台)