tcpソケット接続を作成し、アプリケーションの実行中に無限に開いたままにすることを目的としたシングルトンクラスを作成しました。私のシングルトンクラスは(他のStackOverflowの質問の助けを借りて)想定どおりに見えると思いますが、私の問題は、クラスオブジェクトをいつまたはどのように呼び出すかがわからないことです。私はまだiOS開発にかなり慣れていないので、これはすべて私にとってかなり異質です。
- 私のアプリには複数のビューがあります
- シングルトンクラスを使用してtcpソケット接続を作成し、接続を常に開いたままにしたい
- シングルトンクラスオブジェクトを呼び出す/呼び出す場所がわかりません
- シングルトンクラスオブジェクトを呼び出す/呼び出す方法がわかりません
- SmallSocketsライブラリを使用しています
これが私のクラスファイルです:
SocketConnection.h
#import <Foundation/Foundation.h>
@interface SocketConnection : NSObject
{
}
+ (SocketConnection *)getInstance;
@end
SocketConnection.m
#import "SocketConnection.h"
#import "imports.h"
static SocketConnection *sharedInstance = nil;
@implementation SocketConnection
- (id)init
{
self = [super init];
if (self)
{
while(1)
{
Socket *socket;
int port = 11005;
NSString *host = @"199.5.83.63";
socket = [Socket socket];
@try
{
NSMutableData *data;
[socket connectToHostName:host port:port];
[socket readData:data];
// [socket writeString:@"Hello World!"];
// Connection was successful //
[socket retain]; // Must retain if want to use out of this action block.
}
@catch (NSException* exception)
{
NSString *errMsg = [NSString stringWithFormat:@"%@",[exception reason]];
NSLog(errMsg);
socket = nil;
}
}
}
return self;
}
+ (SocketConnection *)getInstance
{
@synchronized(self)
{
if (sharedInstance == nil)
{
sharedInstance = [[SocketConnection alloc] init];
}
}
return sharedInstance;
}
@end