我有两节课 .
APPagine.h
#import <Foundation/Foundation.h>
@interface APPagineMedia : NSObject
@property (nonatomic, retain) NSString *Immagine;
@property (nonatomic, retain) NSString *Video;
@end
@interface APPagineDescription : NSObject
@property (nonatomic, retain) NSString *Descrizione;
@end
@interface APPagineSommarioLinee : NSObject
@property (nonatomic, retain) NSString *Description;
@property (nonatomic, assign) int IdLinea;
@end
@interface APPagineSommarioCategorie : NSObject
@property (nonatomic, retain) NSString *Nome;
@property (nonatomic, assign) int DestId;
@property (nonatomic, retain) APPagineSommarioLinee *Linee;
@end
@interface APPagineSommario : NSObject
@property (nonatomic, retain) APPagineSommarioCategorie *Categorie;
@end
@interface APPagine : NSObject
@property (nonatomic, assign) NSString *Layout;
@property (nonatomic, assign) int Indice;
@property (nonatomic, retain) NSString *Titolo;
@property (nonatomic, retain) APPagineMedia *Media;
@property (nonatomic, retain) APPagineDescription *Descrizione;
@property (nonatomic, retain) APPagineSommario *Sommario;
@end
APXmlData.h
@interface APXmlData : NSObject
@property (nonatomic, retain) NSString *Lingua;
@property (nonatomic, assign) float Versione;
@property (nonatomic, assign) long long Timestamp;
@property (nonatomic, retain) APPagine *Pagine;
@property (nonatomic, retain) APCategorie *Categorie;
@property (nonatomic, retain) APCarousel *Carousel;
@end
最后在我的控制器界面:
#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的未定义符号:“_ OBJC_CLASS _ $ _ APPagineDescription”,引自:appagine.o中的objc-class-ref“OBJC_CLASS _ $ _ APPagineMedia”,引自:APViewController中的objc-class-ref . 在APPagine中的objc-class-ref .o“ OBJC_CLASS _ $ _ APPagineSommario”,引自:appagine.o中的objc-class-ref ld:未找到架构i386 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我的问题是: what is correct way to import the classes in my controller?
应该使用 #import
或 @class
?以该顺序?
需要 @class
或 #import
的类是什么?
注意
在 Build -> Compile Sources 中,两个文件都已正确配置 .
如果我删除 _XmlData.Pagine = [[APPagine alloc] init];
应用程序运行良好
谢谢 .
3 回答
您收到的错误是链接器错误,而不是编译器错误,因此看起来您的
#import
已正确完成 . 当程序链接器找不到实现时,会发生链接器错误 . 我建议你查一下:您有相应的
@implementation
例如APPagine.m该APPagine.m包含在项目中,并在XCode中为您的目标激活
问题是你的viewController刚才
因为你在viewController中使用了
_XmlData.Pagine = [[APPagine alloc] init];
您还应该使用在viewController中导入
APPagine
类您遇到链接器错误的事实意味着问题不在于
#import
或@class
声明 . 问题是您的项目缺少此类的.m文件(如果库包含您自己应该编译的源)或库(.a或.dylib或.framework,如果库已经存在)为你编译) . 检查目标设置中的"Build Phases"以确保项目中包含必要的文件 .