0

2 つのファイル (.h ファイルと .m ファイル) を作成するタイプ NSObject の新しいクラスを作成しました。2 つのファイルのコードは次のとおりです。

SocketConnection.h

#import <Foundation/Foundation.h>

@interface SocketConnection : NSObject
{

}

+ (SocketConnection *)getInstance;

@end

SocketConnection.m

#import "SocketConnection.h"
#import "imports.h"

static SocketConnection *sharedInstance = nil;

@implementation SocketConnection

- (id)init
{
    self = [super init];

    if (self) 
    {
        while(1)
        {
            Socket *socket;
            int port = 11005;
            NSString *host = @"199.5.83.63";

            socket = [Socket socket];

            @try
            {
                NSMutableData *data;
                [socket connectToHostName:host port:port];
                [socket readData:data];
                //  [socket writeString:@"Hello World!"];

                // Connection was successful //
                [socket retain]; // Must retain if want to use out of this action block.
            }
            @catch (NSException* exception) 
            {
                NSString *errMsg = [NSString stringWithFormat:@"%@",[exception reason]];
                NSLog(errMsg);
                socket = nil;
            }
        }
    }
    return self;
}

+ (SocketConnection *)getInstance
{
    @synchronized(self) 
    {
        if (sharedInstance == nil) 
        {
            sharedInstance = [[SocketConnection alloc] init];
        }
    }
    return sharedInstance;
}

@end 

そして、リンカーエラーが発生しているようです。SocketConnection.h/SocketConnection.m のすべてのコードをコメント アウトすると、エラーはなくなります。私のプロジェクトにはいくつかのビューがあります。SocketConnection.h をインポートした "imports.h" というヘッダー ファイルがあり、SocketConnection.m ファイルに "imports.h" を含めました。私はここで立ち往生しているように見えるので、どんな助けも大歓迎です:/。ありがとう!

エラー:

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_Socket", referenced from:
objc-class-ref in SocketConnection.o
(maybe you meant: _OBJC_CLASS_$_SocketConnection)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

1 に答える 1

3

.m ファイルの先頭に #import "Socket.h" が必要です。

エラーはこちら

    "_OBJC_CLASS_$_Socket", referenced from:
objc-class-ref in SocketConnection.o

SocketConnection が、認識していない「Socket」という名前の Objective-C クラスを参照していると言っています。

于 2012-06-01T17:17:02.957 に答える