1

injectParameterWith が id を取ることは知っていますが、Objective-C にはかなり慣れていないため、そこでの相互作用についてはわかりません。ここに私のケースを示すスニペットがあります:

    return [TyphoonDefinition withClass: AWSServiceConfiguration.class
                      configuration:^(TyphoonDefinition *definition) {
                         definition.scope = TyphoonScopeSingleton;
                         [definition useInitializer:@selector(configurationWithRegion:credentialsProvider:) parameters:^(TyphoonMethod *initializer) {
                             [initializer injectParameterWith: AWSRegionUSEast1]; //compile error here
                             [initializer injectParameterWith: self.awsCredentialsProvider];
                         }];
                      }];

この場合、正しい使い方は何ですか?

4

1 に答える 1

2

「@」記号を使用して、プリミティブを NSNumber としてボックス化する必要があります。例@(AWSRegionUSEast1)

したがって、定義は次のようになります。

return [TyphoonDefinition withClass: AWSServiceConfiguration.class
    configuration:^(TyphoonDefinition *definition) 
    {
        definition.scope = TyphoonScopeSingleton;
        [definition useInitializer:@selector(configurationWithRegion:credentialsProvider:)
            parameters:^(TyphoonMethod *initializer) 
        {
            [initializer injectParameterWith: @(AWSRegionUSEast1)]; //Hooray, compiles!
            [initializer injectParameterWith: self.awsCredentialsProvider];
        }];
}];

設定 (プリミティブ、構造体 cstring など) の挿入に関する詳細については、こちらのユーザー ガイドを参照してください。

于 2014-10-19T22:50:01.060 に答える