1

ストーリーボード付きの Xcode iOS 6。既存のプログラムにチャット機能を追加しています。GCDAsyncSocket を使用しています。1 つのビューコントローラー内にいると、すべてが完全に機能します。多くのビューコントローラーから開いているソケットにアクセスする必要があります。また、これらのビュー コントローラーから GCDASYNCSOCKET にアクセスする必要があります。

誰かが私を助けるかもしれないサンプルコードを持っていますか?

perpareforsegue を使用すると、開いているソケットを渡すことができますか? 私が見たシングルトンは、GCDASYNCSOCKET のような既存のクラスを考慮していないようで、機能していないようです。

いくつかの実例を教えてください。

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];
4

1 に答える 1