2

私は自分のゲームのレベル クラスにかなり動的な API を用意しようとしています。レベルに必要なボーナス ポイントの数、レベルの名前など...

私の実際のゲーム オブジェクトでは、レベルを進めるときに、レベル オブジェクトのメソッドを呼び出します。

+(NSDictionary*)performClassSelectorForLevel:(int)identifier {
    SEL sel = NSSelectorFromString([NSString stringWithFormat:@"optionsForLevel%d", identifier]);
    return [self performSelector:sel];
}

これにより、警告が表示されます。PerformSelector のセレクターが不明であるため、リークが発生する可能性があります。

...

この警告を解決するにはどうすればよいですか?

4

2 に答える 2

2

これは面白い。できません。私の経験ではありません。これは単なる警告であり、エラーではありません。これにより、リークが発生する可能性があります。

使用performSelector:する場合、リークしないことを確認するのはあなたの責任です。もちろん、コンパイラは のセレクターを認識しませんNSString。実行時に値が割り当てられるため、コンパイル時には不明です。

この警告は抑制できますが、無視しても問題ありません

詳細については、この回答を確認してください: PerformSelector 警告

于 2012-08-22T00:20:35.697 に答える
0

コンパイラによって警告が生成されるのは、メモリが誤って管理されていないことを確認するために、そのメソッドによって返される可能性のあるオブジェクトの種類を ARC が知る必要があるためです。

詳細はこちら: performSelector のセレクターが unknown であるため、リークが発生する可能性があります。

于 2020-08-23T15:39:51.823 に答える