下面有两种以编程方式alloc
和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) 如果是这样,它是否已尽可能地进行了编程?是否有我忽略的捷径或最佳实践?