我有一個NSInputStream和一個連接到服務器的iphone應用程序的NSOutputStream。我能夠讀寫數據到套接字而沒有問題。問題是我有一個斷開連接按鈕,當我嘗試關閉任一個流時,它會掛起應用程序。我在猜測,我正試圖在錯誤的時間致電,但我不確定合適的時間。NSStream掛起關閉
3
A
回答
1
您必須確保您告訴底層爲您關閉本地套接字。下面是從我的應用程序之一一些代碼,並聯網:
...
CFReadStreamRef readStreamRef;
CFWriteStreamRef writeStreamRef;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)host, port, &readStreamRef, &writeStreamRef);
if (readStreamRef && writeStreamRef)
{
CFReadStreamSetProperty(readStreamRef, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
CFWriteStreamSetProperty(writeStreamRef, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
inputStream = (NSInputStream*)readStreamRef;
outputStream = (NSOutputStream*)writeStreamRef;
...
2
最有可能你接受他們以後沒有挽留你的輸入和輸出流:)我有完全相同的問題,但非常貴多少時間找到解決方案:)
0
保留NSOutputStream解決了我的問題,希望對別人有所幫助。示例代碼使用ARC編寫,因此它們不需要保留,但是如果您不使用ARC,則必須保留。
NSOutputStream *outputStream = (NSOutputStream *)CFBridgingRelease(writeStream);
**[outputStream retain];**
[outputStream setDelegate:self];
[outputStream scheduleInRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[outputStream open];
相關問題
- 1. NSStream過早關閉
- 2. NSStream在背景中關閉
- 3. NSStream關閉和打開錯誤
- 4. 串口自動關閉掛起
- 5. Tomcat掛起Spring集成Java DSL關閉
- 6. Python線程掛起並不關閉
- 7. 應用程序掛起時關閉IPhone
- 8. 關閉wxpython應用程序掛起gui
- 9. Spring RabbitTemplate.execute隊列關閉時掛起
- 10. JFileChooser在對話框關閉後掛起
- 11. 關閉掛鉤C++
- 12. 當關閉掛鉤破壞
- 13. Visual Studio在關閉.SQL文件時掛起
- 14. boost asio服務器掛起在調用關閉boost :: socket
- 15. python示例應用程序掛起關閉
- 16. 激活腳本掛起並且無法關閉
- 17. 報告查看器在關閉後靜默地掛起X
- 18. C#WinForm Oracle會話在連接關閉後掛起
- 19. 窗體在關閉,最小化或最大化時掛起
- 20. 當用戶界面關閉時,PyQT應用程序掛起
- 21. C#打印文件,等待關閉文件 - 程序掛起
- 22. Pyqt終端在關閉窗口命令後掛起
- 23. 在筆尖文件關閉面板掛起應用
- 24. Java在試圖關閉ProcessBuilder OutputStream時掛起
- 25. Vim with vim.fireplace試圖打開Clojure文件時關閉/掛起
- 26. 寫入到關閉的TCP/IP連接掛起
- 27. Recvfrom()掛起 - 服務器關閉時如何處理此問題
- 28. javax.jms.MessageConsumer在消費者關閉時掛起接收
- 29. 關閉串行端口連接時程序掛起
- 30. 關閉cwac無盡適配器的掛起視圖的點擊
這應該是評論不是答案... – 2012-11-23 04:54:44