我正在尝试创建一个静态库,其中使用了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
不幸的是,这种方法会抛出一个错误"Attempting to use forward class 'AFHTTPSessionManager' as superclass of 'MyClass'"。就我所了解的前向类声明,你只是用它来表示"嘿编译器,classXXX存在,但你看不到它的方法和属性"。因此,我不确定这是否是我的问题的解决方案。
有什么建议可以从一个类派生子类,但不导入它?