加粗位置有一点点性能浪费,第二次加载同一个singleton实例的时候会取前一次保存的实例,这里就没必要再 alloc init了
Opened this issue · 0 comments
加粗位置有一点点性能浪费,第二次加载同一个singleton实例的时候会取前一次保存的实例,这里就没必要再 alloc init了
-
(id)createService:(Protocol *)service
{
id implInstance = nil;if (![self checkValidService:service] && self.enableException) {
@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:[NSString stringWithFormat:@"%@ protocol does not been registed", NSStringFromProtocol(service)] userInfo:nil];
}Class implClass = [self serviceImplClass:service];
if ([[implClass class] respondsToSelector:@selector(shareInstance)])
implInstance = [[implClass class] shareInstance];
else
implInstance = [[implClass alloc] init];if (![implInstance respondsToSelector:@selector(singleton)]) {
return implInstance;
}NSString *serviceStr = NSStringFromProtocol(service);
if ([implInstance singleton]) {
id protocol = [[BHContext shareInstance] getServiceInstanceFromServiceName:serviceStr];if (protocol) { return protocol; } else { [[BHContext shareInstance] addServiceWithImplInstance:implInstance serviceName:serviceStr]; }
} else {
[[BHContext shareInstance] addServiceWithImplInstance:implInstance serviceName:serviceStr];
}return implInstance;
}