text: int __forwarding__(void *frameStackPointer, int isStret) {
      id receiver = *(id *)frameStackPointer;
      SEL sel = *(SEL *)(frameStackPointer + 8);
      const char *selName = sel_getName(sel);
      Class receiverClass = object_getClass(receiver);
  
      // 调用 forwardingTargetForSelector:
      if (class_respondsToSelector(receiverClass, @selector(forwardingTargetForSelector:))) {
          id forwardingTarget = [receiver forwardingTargetForSelector:sel];
          if (forwardingTarget && forwardingTarget != receiver) {
              return objc_msgSend(forwardingTarget, sel, ...);
          }
      }
  
      // 调用 methodSignatureForSelector 获取方法签名后再调用 forwardInvocation
      if (class_respondsToSelector(receiverClass, @selector(methodSignatureForSelector:))) {
          NSMethodSignature *methodSignature = [receiver methodSignatureForSelector:sel];
          if (methodSignature && class_respondsToSelector(receiverClass, @selector(forwardInvocation:))) {
              NSInvocation *invocation = [NSInvocation _invocationWithMethodSignature:methodSignature frame:frameStackPointer];
  
              [receiver forwardInvocation:invocation];
  
              void *returnValue = NULL;
              [invocation getReturnValue:&value];
              return returnValue;
          }
      }
  
      if (class_respondsToSelector(receiverClass,@selector(doesNotRecognizeSelector:))) {
          [receiver doesNotRecognizeSelector:sel];
      }
  
      // The point of no return.
      kill(getpid(), 9);
  }
  