Xcode iOS 6 with storyboard. 이미 기존 프로그램에 채팅 기능을 추가하고 있습니다. GCDAsyncSocket을 사용하고 있습니다. 하나의 viewcontroller 내에있을 때 모든 것이 완벽하게 작동합니다. 많은 viewcontroller에서 열린 소켓에 액세스해야합니다. 또한 이러한 viewcontroller에서 GCDASYNCSOCKET에 액세스해야합니다.보기 컨트롤러 (스토리 보드)간에 열린 소켓 전달하는 방법
누군가 나를 도와 줄 수있는 몇 가지 예제 코드가 있습니까?
perpareforsegue를 사용하면 오픈 소켓을 통과 할 수 있습니까? 내가 본 싱글 톤은 GCDASYNCSOCKET과 같은 기존 클래스를 고려하지 않고 작동하지 않는 것 같습니다.
몇 가지 실제 예를 들어 도와주세요.
내가 오류가 다른의 ViewController에서 액세스하려고하면 Singleton.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
Singleton.h
#import <Foundation/Foundation.h>
#import "GCDAsyncSocket.h"
@interface SocketConnection : NSObject{}
+ (SocketConnection *)getInstance;
@end
이 코드 (싱글)이 나에게 오류
을 제공 (SocketConnection에서 'GCDAsyncSocket'_strong '에 할당 된 호환되지 않는 포인터 유형)
socket = [SocketConnection getInstance];
prepareForSegue 동안 원하는 참조를 전달할 수 있으며, 싱글 톤 설명은 매우 모호하게 들립니다. 시도한 코드 중 일부를 표시 할 수 있습니까? – jrturton
jrTurton - 위의 싱글 톤 코드를 추가했습니다. 만약 내가 당신이 "viewcontroller 내 open socket을 이동하기 위해 prepareForSegue를 사용할 수 있다고 말하는 것이 더 쉬울 수도있다. AppDelgate에 코드를 넣는 것을 포기하고 작동하지 않는 싱글 톤과 함께갔습니다. 제안 생각? – CrazyGoose