以下に、さまざまなクラスと「タイプ」のオブジェクトをプログラムalloc
で作成する 2 つの方法を示します。init
- (id)buildObjectOfClass:(NSString *)classString andType:(NSString *)typeString
{
id buildObject;
Class className = NSClassFromString(classString);
SEL initWithTypeSelector = NSSelectorFromString(@"initWithType:");
if ([className instancesRespondToSelector:initWithTypeSelector] == YES) {
buildObject = [[className alloc] performSelector:initWithTypeSelector
withObject: typeString];
}
return buildObject;
}
このメソッドの実装は、元々、次のように簡潔に記述されていました。
{ return [[className alloc] initWithType:typeString]; }
私の質問は次のとおりです。1) 詳細バージョンは必要ですか? 2) もしそうなら、それは可能な限り最善にプログラムされましたか? 私が無視しているショートカットやベストプラクティスはありますか?