从UAStoreFrontUI.h调用代码生成链接器错误

时间:2012-10-23 19:50:21

标签: objective-c xcode linker-errors urbanairship.com

我刚刚按照the UrbanAirship site的说明将UrbanAirship-1.3.3纳入我的项目,并#import编辑了相应的标题,它编译得很好。但是在我的app delegate的方法

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:NSDictionary*)launchOptions

行:

[UAStoreFront useCustomUI:[UAStoreFrontUI class]];

现在需要使用Urban Airship,导致这些链接器错误:

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

头文件(UAStoreFrontUI.h)导入时没有问题,但只要我从中调用代码(例如[UAStoreFrontUI类]),链接器就会开始抱怨。我发现这个特别奇怪,因为UAirship.h和UAStoreFront.h是链接的,可以正常使用。

我对xcode很新,所以可能会有一个构建设置或我忽略的东西,但除此之外,此时我已经碰到了一堵砖墙并且不确定如何处理。任何见解都将不胜感激

2 个答案:

答案 0 :(得分:0)

哦,我刚刚看过Urban Airship,UAStoreFrontUI实际上只是符合UAStoreFrontUIProtocol协议的类的示例。即它不是图书馆里的一个类。

你应该自己做,但我想如果你确实想要使用他们的示例,那么你需要在项目中加入UAStoreFrontUI.hUAStoreFrontUI.m,就像你将自己的文件添加到你的项目中一样项目

答案 1 :(得分:0)

链接器错误导致未将.m,.xib和其他资源文件添加到Build Phases下的Copy Bundle Resources。似乎必须在Copy Bundle Resources下单独显式添加相应的文件,因为添加存在这些文件的文件夹似乎不起作用。由于某些原因,这在Urban Airship教程中没有记录。

我偶然发现了我偶然发现的解决方案here以便进一步阅读