使用台风给单个人注射多个实例

时间:2016-11-30 09:43:54

标签: ios objective-c typhoon

我有如下组装,它将从plist

开始
release {
            debuggable false
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

当app加载时会创建实例并注入相关位置

然后我有一些静态方法需要使用它,所以我尝试了下面的

@implementation classAAssembly
- (id)classA {
    return [TyphoonDefinition withClass:[classA class] configuration:^(TyphoonDefinition *definition) {
               definition.scope = TyphoonScopeSingleton;
           }];
}

问题是,当我这样做时,它会给出新的实例,我期待的是在应用程序加载时创建的相同实例。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您正在上面创建一个新程序集。你需要做的是获得one created using plist integration的句柄。例如,要从应用程序委托访问程序集,请将其注入其中。

要从静态方法访问程序集,您必须创建一个指向它的静态指针:

- (void) typhoonDidInject {
    myStaticAssembly = this.assembly
}