alibaba/BeeHive

加粗位置有一点点性能浪费,第二次加载同一个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;
    }