我创建了一个非常简单的自定义类,实际上只是一个模型,用于保存有关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周围看到的一切都是关于导入库存在问题的人,但这是我自己的自定义类。
答案 0 :(得分:4)
您缺少该类的实现,请按如下所示创建一个
@implementation ConnectionInfo
@end
为什么需要这样做?
您之前所做的就是声明类接口。所有这一切都是告知用户(和编译器)在实现中期望的内容。它没有声明该类是如何工作的。没有实现,您没有要使用的类!
为什么实施空了?
你可能认为把一个空白的实现放进去是毫无意义的。这将做的是通知编译器如何创建一个对象。虽然您的实现什么都不做,但您继承自NSObject
,这与对象创建有很大关系。此外,使用最新的Xcode,您无需手动@synthesize
您的属性,因此在您声明@implementation
时也会自动为您设置这些属性。