Iphone 从错误中引用的#导入和@class cause _OBJC_class_u的问题

Iphone 从错误中引用的#导入和@class cause _OBJC_class_u的问题,iphone,objective-c,ios,class,interface,Iphone,Objective C,Ios,Class,Interface,我有两节课 阿帕金 最后在我的控制器界面: #import "APXmlData.h" @interface APViewController : UIViewController { APXmlData *_XmlData; } @end 在实施过程中: _XmlData.Timestamp = 123; _XmlData.Version = 1.0; _XmlData.Pagine = [[APPagine alloc] init]; _XmlData.Pagine.Layout =

我有两节课

阿帕金
最后在我的控制器界面:

#import "APXmlData.h"
@interface APViewController : UIViewController
{
  APXmlData *_XmlData;
}
@end
在实施过程中:

_XmlData.Timestamp = 123;
_XmlData.Version = 1.0;
_XmlData.Pagine = [[APPagine alloc] init];
_XmlData.Pagine.Layout = @"a";
_XmlData.Pagine.Indice = 1;
_XmlData.Pagine.Titolo = @"titolo";
//[...]

但是,
当我将数据设置为

_XmlData.Pagine = [[APPagine alloc] init];
他给了我一个链接器错误,经典的错误

架构i386的未定义符号:
“\u OBJC\u CLASS\u$\ u AppEngineDescription”,引用自:
AppEngine.o中的objc类引用

“\u OBJC\u CLASS\u$\u AppEngineMedia”,引用自:
APViewController.o中的objc类引用
AppEngine.o中的objc类引用

“\u OBJC\u CLASS\u$\u APPagineSommario”,引用自:
AppEngine.o中的objc类引用

ld:找不到架构i386的符号clang:错误:链接器命令失败,退出代码为1 (使用-v查看调用)

我的问题是:导入控制器中的类的正确方法是什么?
应该使用
#导入
@class
? 按那个顺序?
哪些类需要
@class
#import

注 在Build->Compile Sources中,两个文件都已正确配置。
如果我删除
\u XmlData.Pagine=[[AppEngine alloc]init]应用程序运行良好


谢谢。

问题是您的viewController刚刚启动

#import "APXmlData.h"
当您使用
\u XmlData.Pagine=[[AppEngine alloc]init]时在viewController中

您还应该在viewController中使用导入
AppEngine

#import "APPagine.h"

您收到的错误是链接器错误,而不是编译器错误,因此您的
#import
似乎已正确完成。当程序链接器找不到实现时,会发生链接器错误。我建议您检查:

  • 在例如AppEngine.m中有相应的
    @实现
  • AppEngine.m包含在项目中,并在XCode中为您的目标激活

    • 链接器出现错误的事实意味着问题不在于
      #导入
      @class
      声明。问题是您的项目缺少此类的.m文件(如果库中包含您应该自己编译的源代码)或库(.a或.dylib或.framework,如果库已经为您编译)。检查目标设置中的“构建阶段”,确保项目中包含了必要的文件

      如果您的构建阶段没有相应的xib或实现文件,那么也可能会出现此链接器错误。您是否可以检查是否缺少某些内容..中的xib不重要,我只有控制器。如果我删除
      \u XmlData.Pagine=[[AppEngine alloc]init]应用程序运行良好。你说编译源代码没问题。包含
      AppEngineDescription
      @实现
      等的.m文件也包括在内吗?您显示了所有那些
      @接口
      语句,但这与链接器错误完全无关。问题是相应的
      @实现
      子句在哪里?那些.m文件是否包含在“构建设置”中?我不这么认为。如果他遇到编译器错误,这可能是正确的解决方案,但事实并非如此。这是一个链接器错误,这意味着他没有在他的项目中包含
      APPagine
      类本身的某些部分。@vishy——可能是真的,但不会给他一个链接器错误。这是缺少实现的迹象。是的,我认为这只是导致此错误的两个原因。。我两个都建议了,让我们看哪一个能解决它吧。+1谢谢,伙计,在AppEngine中添加@implementation效果很好。但这是强制性的吗?或者只有在我添加多个接口时才重要?
      @implementation
      是实现类的方法的地方。如果希望创建纯接口(ObjC中的协议),则应使用
      @protocol
      而不是
      @interface
      #import "APXmlData.h"
      
      #import "APPagine.h"