创建新类时Xcode生成错误

时间:2012-06-01 17:14:36

标签: iphone ios xcode singleton

我创建了一个新类型NSObject,它创建了两个文件 - .h和.m文件。以下是两个文件中的代码:

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中的所有代码时,错误就会消失。我的项目中有几个视图。我有一个名为“imports.h”的头文件,我已经导入了SocketConnection.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)

1 个答案:

答案 0 :(得分:3)

你需要在你.m文件的顶部#import“Socket.h”。

这里的错误

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

是说SocketConnection正在引用一个它不知道的名为“Socket”的Objective-C类。