- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NSFileHandle
从套接字读取数据。这就是我创建 filehandle
的方式:
filehandle = [[NSFileHandle alloc] initWithFileDescriptor:sock closeOnDealloc:YES];
我这样做:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(readData:) name:nil object:filehandle];
[filehandle readInBackgroundAndNotify];
我注意到,readInBackgroundAndNotify
将 fileHandle
的 retainCount
增加 1。因此,当我释放此 filehandle
一旦我完成读取数据,内存就不会被释放。因此它试图读取一些无效数据并且应用程序崩溃了。请注意,此问题出现在 ios 4.3 中,但不会出现在 ios 5 中。我在释放 filehandle
之前删除了观察者。在释放文件句柄对象之前我还应该做些什么吗?
最佳答案
I notice that, readInBackgroundAndNotify is increasing the retainCount of the fileHandle by 1.
因为它可能应该作为实现细节的一部分...您要求 filehandle
在后台有效地安排,这样如果数据到达,它会通知。
注意retainCount
是没用的;在这种情况下它可能增加了 5 或 42。这是无关紧要的。最重要的是,您要求它在后台执行某些操作,并且在达到“停止在后台执行操作”状态之前,该对象可能仍然存在。
Hence when i release this filehandle once I am done reading data, the memory is not released.
你有没有告诉文件句柄停止在后台读取?也许通过 close
关闭它?如果没有,它可能会继续。
iOS 4 和 5 之间的区别在于,文件句柄可能存在逻辑,指出没有更多的观察者,因此自动停止读取。同样,您不应依赖的实现细节。
关于iphone - "readInBackgroundAndNotify"增加接收器的保留计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175520/
我正在使用 NSFileHandle 从套接字读取数据。这就是我创建 filehandle 的方式: filehandle = [[NSFileHandle alloc] initWithFileDe
您好,我正在使用 NSFileHandle 的 readInBackgroundAndNotify 方法在日志文件更新时获取通知。 我有以下代码: - (void)startReading {
我通过 NSTask 调用各种命令行工具。这些工具可能会运行几秒钟,并不断地将文本输出到stdout。最终,该工具将自行终止。我的应用使用 readInBackgroundAndNotify 异步读取
我正在使用 NSFileHandle readInBackgroundAndNotify 从管道读取数据。但在打开应用程序系统状态栏菜单之前,我不会收到 NSFileHandleReadComplet
我正在尝试在后台线程中运行 NSTask 并使用 readInBackgroundAndNotify 在附加到我的窗口(首选项 Pane )的 NSPanel 上的 NSTextview 中显示其输出
我有以下 Obj-C 代码及其日志输出。谁能告诉我为什么我没有从 NSFileHandle 获得任何输出? @implementation AppDelegate - (void)applicatio
我是一名优秀的程序员,十分优秀!