Xcode iOS 6 与故事板。我正在向现有程序添加聊天功能。我正在使用 GCDAsyncSocket。当我呆在一个视图控制器中时,一切都完美无缺。我需要从许多视图控制器访问打开的套接字。我还需要从这些视图控制器访问 GCDASYNCSOCKET。
有没有人有一些可能对我有帮助的示例代码?
使用 perpareforsegue 会允许我通过一个打开的套接字吗?我见过的任何单例似乎都没有考虑到已经存在的类,如 GCDASYNCSOCKET 并且似乎不起作用。
请帮我提供一些工作示例。
单身人士.m
#import "SocketConnection.h"
#import "GCDAsyncSocket.h"
@implementation SocketConnection
static GCDAsyncSocket *socket;
+ (SocketConnection *)getInstance;
{
static dispatch_once_t once;
static SocketConnection *instanceOfSocketConnection;
dispatch_once(&once, ^ {instanceOfSocketConnection =[[SocketConnection alloc] init];});
return instanceOfSocketConnection;
}
- (id)init
{
NSString *host = @"xxx.xxxxx.com";
uint16_t port = 5467;
if (socket == nil)
{
socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
}
if (![socket isConnected])
{
NSError *error = nil;
if (![socket connectToHost:host onPort:port error:&error])
{
NSLog(@"Error connecting: %@", error);
}
}
return self;
}
-(void) socket:(GCDAsyncSocket *) socket didConnectToHost:(NSString *)host port:(uint16_t)port
{
NSLog(@"Connected");
}
@end
单例.h
#import <Foundation/Foundation.h>
#import "GCDAsyncSocket.h"
@interface SocketConnection : NSObject{}
+ (SocketConnection *)getInstance;
@end
此代码(单例)给我一个错误
当我尝试从另一个视图控制器访问它时出现错误(从 SocketConnection 分配给 'GCDAsyncSocket" _strong' 的指针类型不兼容)
socket = [SocketConnection getInstance];