私はObjective Cとiosの開発が初めてです。私は通常、Android アプリを Java でプログラミングし、常に onPause 呼び出しを使用してソケットを閉じました。しかし、applicationWillResignActive の下でクローズ ソケット メソッドを呼び出すと、ストリーム リスナーとの通信が失われ、入力ストリームと出力ストリームを閉じることができません。実際、アプリがサーバーに接続されていても、両方のストリームのストリーム ステータスに NSStreamStatusNotOpen または 0 が表示されます。何か案は?
ありがとうございました
編集
SocketHandler.m クラスの Connect メソッド:
-(void)connect:(int *)port ipAddress:(NSString *)ipAddress
{
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)ipAddress, port, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
NSLog(@"input stream id %i", inputStream);
}
-(void)disconnect{
NSLog(@"disconnect method called");
socketStatus = [outputStream streamStatus];
int status = socketStatus;
NSLog(@"Stream Status is %i", status);
if (status == 2) {
[inputStream close];
[outputStream close];
NSLog(@"Socket Closed");
}
}