【发布时间】:2014-09-16 13:30:03
【问题描述】:
我正在尝试做一个使用 AFNetworking 的静态库。我只想使用 .a 和 .h 文件分发库。
但是,我在库中的一个类是AFHTTPSessionManager 的子类。所以我之前的 .h 文件是这样的:
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
@interface MyClass : AFHTTPSessionManager
+ (MyClass *) sharedInstance;
- (void) doMagic;
@end
当我编译库并将 .a 和 .h 文件导入新的测试项目时,我收到一个错误“找不到词法或预处理器问题 'AFNetworking.h' 文件”。认为解决方案是使用前向类声明并将#import“AFNetworking.h”移动到.m文件,如下所示:
#import <Foundation/Foundation.h>
@class AFHTTPSessionManager;
@interface MyClass : AFHTTPSessionManager
+ (MyClass *) sharedInstance;
- (void) doMagic;
@end
不幸的是,这种方法会引发错误“尝试使用前向类 'AFHTTPSessionManager' 作为 'MyClass' 的超类”。 据我了解,您使用前向类声明只是为了说“嘿,编译器 classXXX 存在,但您看不到它的方法和属性”。因此,我不确定这是否可以解决我的问题。
有什么建议可以从一个类继承而不是导入它吗?
【问题讨论】:
标签: ios objective-c forward-declaration