J'ai un NSInputStream et un NSOutputStream dans une application iphone qui sont connectés à un serveur. Je suis capable de lire et d'écrire des données sur les prises sans problème. Le problème est que j'ai un bouton de déconnexion, et quand j'essaie d'appeler à proximité de l'un des flux, il bloque l'application. Je suppose que j'essaie d'appeler au mauvais moment, mais je ne suis pas sûr du bon moment.NSStream se ferme
3
A
Répondre
1
Vous devez vous assurer que vous demandez au calque sous-jacent de fermer le socket natif pour vous. Voici un code d'une de mes applications qui ne en réseau:
...
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
vous Très probablement n'a pas retenu votre flux d'entrée et de sortie après leur réception :) J'ai eu exactement le même problème, mais il m'a coûté beaucoup de temps à trouver la solution :)
0
Retenir le NSOutputStream résout mon problème, j'espère que cela aidera les autres. Les exemples de codes sont écrits avec ARC, ils n'ont donc plus besoin de les conserver mais si vous n'utilisez pas ARC, vous devez les conserver.
NSOutputStream *outputStream = (NSOutputStream *)CFBridgingRelease(writeStream);
**[outputStream retain];**
[outputStream setDelegate:self];
[outputStream scheduleInRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[outputStream open];
Questions connexes
- 1. Socket se ferme automatiquement
- 2. MPMoviePlayerViewController se ferme inopinément
- 3. WebSocket se ferme sur l'envoi
- 4. Android TextView.setText force se ferme
- 5. .NET StreamReader ne se ferme pas
- 6. glade aboutDialog ne se ferme pas
- 7. L'application VB.NET ne se ferme pas complètement
- 8. Quitter l'application lorsque NSWindow se ferme
- 9. ADOQuery se ferme après le constructeur
- 10. Comment être notifié lorsque NSWindow se ferme
- 11. Fenêtre Facebox se ferme après soumettre
- 12. L'application Winform ne se ferme pas
- 13. L'application IOS4.2 se ferme avec EXC_BAD_ACCESS
- 14. GXT KeyListener.componentKeyDown() se ferme immédiatement MessageBox.alert()
- 15. Cookie détruite lorsque le navigateur se ferme
- 16. Socket ne se ferme pas correctement
- 17. L'application iPhone se ferme sur l'IPad
- 18. Les iframe se ferme (via onclick = "self.parent.tb_remove();) dans Firefox et IE7, mais il ne se ferme pas dans Chrome
- 19. Problème avec la connexion SSL NSStream
- 20. Cocoa NSStream TCP connexion à FTP
- 21. Utiliser NSStream pour communiquer avec PHP?
- 22. Comment se débarrasser des processus fils Java lorsque mon application Java se ferme/se bloque?
- 23. Rediriger stdin et stdout où stdin se ferme en premier
- 24. Visual studio 2008 se ferme dès que je l'ouvre
- 25. La boîte de dialogue Facebook Connect ne se ferme pas
- 26. L'application console déclenche un processus puis se ferme
- 27. quelle méthode d'activité principale s'exécute lorsque l'application se ferme?
- 28. iPhone comment arrêter MPMoviePlayerController se ferme à la fin?
- 29. Le processus ne se ferme pas après l'ajout de l'écouteur
- 30. L'application hébergeant Report Viewer se ferme brutalement après l'exportation
Ceci devrait être un commentaire pas une réponse ... –