我創建了一個單例類,它的任務是創建一個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
也同意你的評論,他實施getInstance方法的方式將基本上在第一次NEED時正確地初始化singlton。 – trumpetlicks
你介意用代碼示例來詳細說明嗎?這聽起來像我應該去的方式,但我不知道我明白代碼的樣子。我會很感激我能得到的任何幫助。謝謝! – Skizz
@Skizz更新答案以提供所需的詳細信息。 – heckman