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