Ios 在视图控制器之间传递socketIO连接

Ios 在视图控制器之间传递socketIO连接,ios,xcode,xcode5,Ios,Xcode,Xcode5,我知道这个问题已经被问过很多次了 我将Socket.IO客户端用于Xcode()。问题是我需要在许多视图控制器中使用socketIO连接 在ViewControllerA(.h文件)中,我有: #import "SocketIO.h" @inteface ViewControllerA : UIViewController <SocketIODelegate> { SocketIO *socketIO; } ViewControllerB是为聊天室设计的,我需要得到这

我知道这个问题已经被问过很多次了

我将Socket.IO客户端用于Xcode()。问题是我需要在许多视图控制器中使用socketIO连接

在ViewControllerA(.h文件)中,我有:

#import "SocketIO.h"

@inteface ViewControllerA : UIViewController <SocketIODelegate> {
     SocketIO *socketIO;
}

ViewControllerB是为聊天室设计的,我需要得到这个
socketIO
对象,用于与服务器通信。我需要做这些事情对吗

1) 在ViewControllerB中与在ViewControllerA中相同

#import "SocketIO.h"

@inteface ViewControllerA : UIViewController <SocketIODelegate> {
     SocketIO *socketIO;
}

或者可能有一些简单的方法可以从许多视图控制器访问数据?

尽管有些人不喜欢单例,但我发现它们在这种情况下非常有用,因为在这种情况下,一段数据没有明显的“所有者”。单例对象是一个只作为一个实例存在的对象。它是通过singleton类本身中的静态方法访问的:

SocketKeeperSingleton.h

@interface SocketKeeperSingleton : NSObject

@property (nonatomic, strong) SocketIO *socketIO;
+ (SocketKeeperSingleton *) sharedInstance;

@end 
SocketKeeperSingleton.m

#import "SocketKeeperSingleton.h"

@implementation SocketKeeperSingleton 

// The synthesize will automatically generate a getter and setter
@synthesize socketIO = _socketIO;

+ (SocketKeeperSingleton *)sharedInstance {
    static SocketKeeperSingleton *sharedInstance = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

- (id)init {
    if (self = [super init]) {
        NSLog(@"In SocketKeeperSingleton init");
    }
    return self;
}

// Override the getter for your socket
- (SocketIO *)socketIO {
    if (!_socketIO || check-to-see-if-your-socket-has-been-disconnected-or-failed) {
        _socketIO = code-to-create-and-connect-your-socket-goes-here
    }
    return _socketIO;
}

@end
然后,从项目中的任何位置获取套接字,如下所示:

SocketIO *mySocketIO = [SocketKeeperSingleton sharedInstance].socketIO;

祝你好运

创建singleton怎么样?singleton?第一次听的时候,你能举个例子吗?谢谢!我没有这段代码的所有者,这正是我想要的!
#import "SocketKeeperSingleton.h"

@implementation SocketKeeperSingleton 

// The synthesize will automatically generate a getter and setter
@synthesize socketIO = _socketIO;

+ (SocketKeeperSingleton *)sharedInstance {
    static SocketKeeperSingleton *sharedInstance = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

- (id)init {
    if (self = [super init]) {
        NSLog(@"In SocketKeeperSingleton init");
    }
    return self;
}

// Override the getter for your socket
- (SocketIO *)socketIO {
    if (!_socketIO || check-to-see-if-your-socket-has-been-disconnected-or-failed) {
        _socketIO = code-to-create-and-connect-your-socket-goes-here
    }
    return _socketIO;
}

@end
SocketIO *mySocketIO = [SocketKeeperSingleton sharedInstance].socketIO;