我想創建一個控制器,它依賴於類的模型NSClassFromString會影響性能嗎?
-(BaseController *)getControllerForModel:(Model *)model
{
BaseController *controller = nil;
Class controllerClass = [BaseController class]; //the default value
//find the right controller
if ([model isMemberOfClass:[ModelClass1 class]])
controllerClass = [ConcreteController1 class];
else if ([model isMemberOfClass:[ModelClass2 class]])
controllerClass = [ConcreteController2 class];
else if ([model isMemberOfClass:[ModelClass3 class]])
controllerClass = [ConcreteController3 class];
...
else if ([model isMemberOfClass:[ModelClassX class]])
controllerClass = [ConcreteControllerX class];
else
Trace(TRACELEVEL_WARNING, @"Unrecognized model type: %@", NSStringFromClass([model class]));
//Now instantiate it with the model
controller = [[[controllerClass alloc] initWithModel:model] autorelease];
return slotController;
}
我想找到一個更靈活的解決方案,這一點,並認爲擁有一本字典,其模型的類映射到的給定實例控制器類,然後NSClassFromString
可以給我正確的例子。
我的問題是:NSClassFromString
如果我多次使用它(例如,一次100次),那麼我的應用程序的性能會如何?或者它會像上述方法一樣快?
我知道這個答案已被接受很長一段時間,但不幸的是,我認爲它有根本的缺陷。 'NSDictionary'鍵不應該只是'id's,它們應該是實現'NSCopying'協議的'id's。 'Class'不這樣做,因此實例不能安全地用作鍵。令人遺憾的是,您留下了存儲類名稱並再次調用「NSClassFromString」。 – camdez 2014-01-21 22:20:56