我想做一個靜態庫,它使用AFNetworking。我只想用.a和.h文件分發這個庫。轉發類作爲超類
然而,庫中的其中一個類是AFHTTPSessionManager
一個子類。所以我以前的.h文件中是這樣的:
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
@interface MyClass : AFHTTPSessionManager
+ (MyClass *) sharedInstance;
- (void) doMagic;
@end
當我編譯庫和進口的u和.h文件到一個新的測試項目中,我得到了一個錯誤「詞彙或預處理問題「AFNetworking.h '找不到文件'。認爲解決辦法是使用正班宣言和移動#進口「AFNetworking.h」的.m文件是這樣的:
#import <Foundation/Foundation.h>
@class AFHTTPSessionManager;
@interface MyClass : AFHTTPSessionManager
+ (MyClass *) sharedInstance;
- (void) doMagic;
@end
不幸的是,這種方法會引發錯誤「試圖使用正向類'AFHTTPSessionManager'作爲'MyClass'的超類'「。 據我瞭解,你用它正向類的聲明只是說「哎編譯classXXX存在,但你不能看到它的方法和屬性」。因此,我不確定這是否是解決我的問題的方法。
任何建議如何從一個類繼承,但不是進口嗎?
當然,你真的應該在自己的名字前面加上AFHTTPSessionManager的前綴,這樣它就不會與你的庫的用戶衝突,因爲它可能想使用該庫的不同版本;在這種情況下,您可以將您的前綴AFNetworking標題也發送出去。 –