架构i386的未定义符号 - 自定义类

时间:2013-01-28 09:24:25

标签: ios

我创建了一个非常简单的自定义类,实际上只是一个模型,用于保存有关NSURLConnections的一些数据,以便我可以跟踪它们。目的是拥有一个数组,一组ConnectionInfo对象。

@interface ConnectionInfo : NSObject

@property NSString *connectionDescription;
@property int *campaignID;
@property int *requestType; //0 - Score, 1 - Image

@end

我没有把它放在它自己的文件中,因为它很简单,所以它只是位于我的视图控制器的顶部。

无论如何,Xcode并没有给我任何问题,但是,一旦我想通过

创建这个类的实例
ConnectionInfo *thisConnection = [[ConnectionInfo alloc] init];

它引发了以下两个错误:

  

架构i386的未定义符号:    “_OBJC_CLASS _ $ _ ConnectionInfo”,引自:        ServerTestViewController.o中的objc-class-ref   ld:找不到架构i386的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我在Stackoverflow周围看到的一切都是关于导入库存在问题的人,但这是我自己的自定义类。

1 个答案:

答案 0 :(得分:4)

您缺少该类的实现,请按如下所示创建一个

@implementation ConnectionInfo
@end

为什么需要这样做?

您之前所做的就是声明类接口。所有这一切都是告知用户(和编译器)在实现中期望的内容。它没有声明该类是如何工作的。没有实现,您没有要使用的类!

为什么实施空了?

你可能认为把一个空白的实现放进去是毫无意义的。这将做的是通知编译器如何创建一个对象。虽然您的实现什么都不做,但您继承自NSObject,这与对象创建有很大关系。此外,使用最新的Xcode,您无需手动@synthesize您的属性,因此在您声明@implementation时也会自动为您设置这些属性。