how to use a UInterface as function param?

I have a UInterface IIShipControllInput written in C++ .
a actor/pawn that implements the interface in blueprint.
call the following function with this actor as param

void USpaceShipMovementComponent::SetInputSource(const TScriptInterface<IIShipControllInput> &inputSource)
{
		mInputSource = inputSource;
}

the result is the inputSource’s interface pointer is a nullptr,with a correct object pointer.really strange
and call the same function with a instanced c++ object works fine.
how can i make this right?