Jer*_*vid 3 extension-methods objective-c
在创建一个将在几个项目中使用的库时,我遇到了一个我自己无法解决的错误.
该库由几个"模块"组成,每个模块都声明了它的一组类.模块声明了引用类的头文件.每个模块头都包含在库头中,并且所有模块头都被复制到库目标中.
"GMData"模块定义了库的ORM层,它声明了一个"GMInitializerBase"类,其目的是初始化模块.它必须在UIApplicationDelegate中调用一次.
"GMModel"模块包含应用程序的基本模型(Categories,Articles,...),它必须将自身注册到"GMData"才能正常运行.
结构体:
<Library Root>
Library.h
<GMData>
GMData.h
GMInitializerBase.{h,m}
<GMModel>
GMModel.h
GMInitializerBase+GMModel.{h,m}
Run Code Online (Sandbox Code Playgroud)
Library.h的内容
#import "GMData.h"
#import "GMModel.h"
Run Code Online (Sandbox Code Playgroud)
GMData.h的内容
#import "... ORM related headers ..."
#import "GMInitializerBase.h"
Run Code Online (Sandbox Code Playgroud)
GMInitializerBase的内容.{h,m}
#import "... ORM Classes ..."
@interface GMInitializerBase : NSObject {
}
+ (void) bootstrap;
+ (GMInitializerBase*) initializer; // autoreleased instance creator
- (void) setup;
- (void) setupStore:(GMManagerFactory*)factory; // Setup database connection
- (void) setupHelpers:(GMHelperFactory*)factory; // Register helpers (abstract)
- (void) setupManagers:(GMManagerFactory*)factory; // Register managers (abstract)
@end
@implementation GMInitializerBase
+ (void) bootstrap {
GMInitializerBase* initializer = [self initializer];
[initializer setup];
}
- (void) setup {
/* Breakpoint 01 */
GMHelperFactory* helperFactory = [GMHelperFactory sharedInstance];
GMManagerFactory* managerFactory = [GMManagerFactory sharedInstance];
[self setupStore:managerFactory];
[self setupHelpers:helperFactory];
[self setupManagers:managerFactory];
}
@end
Run Code Online (Sandbox Code Playgroud)
GMModel.h的内容
#import "... Base Models files ..."
#import "GMInitializerBase+GMModel.h"
Run Code Online (Sandbox Code Playgroud)
GMInitializerBase + GMModel的内容.{h,m}
@interface GMInitializerBase (GMModel_Additions)
- (void) setup;
- (void) setupGMModelHelpers:(GMHelperFactory*)factory;
- (void) setupGMModelManagers:(GMManagerFactory*)factory;
@end
@implementation GMInitializerBase (GMModel_Additions)
- (void) setup {
/* Breakpoint 02 */
GMHelperFactory* helperFactory = [GMHelperFactory sharedInstance];
GMManagerFactory* managerFactory = [GMManagerFactory sharedInstance];
// parent implementation
[self setupStore:managerFactory];
// current implementation
[self setupGMModelHelpers:helperFactory];
[self setupGMModelManagers:managerFactory];
// parent implementation
[self setupHelpers:helperFactory];
[self setupManagers:managerFactory];
}
- (void) setupGMModelHelpers:(GMHelperFactory*)factory { /* ... */ }
- (void) setupGMModelManagers:(GMManagerFactory*)factory { /* ... */ }
@end
Run Code Online (Sandbox Code Playgroud)
ProjectAppDelegate.m的内容(位于另一个项目中,它包含library.a并搜索"Headers"目录)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[GMInitializerBase initializer] setup];
}
Run Code Online (Sandbox Code Playgroud)
在第一个断点处停止(断点01)它在库中时崩溃:
在测试项目中的工作:
我没有尝试重载库类,但我认为它也可以工作.
我的问题如下:我无法获得额外的工作,我需要它.
感谢您的阅读,感谢您的回答.