跳转至

GFWeakMethodInvocation

API Reference / Kernel / 类索引

  • 路径:addons/gf/kernel/core/gf_weak_method_invocation.gd
  • 模块:Kernel
  • 继承:RefCounted
  • API:public
  • 类别:运行时句柄 (runtime_handle)
  • 首次版本:unreleased

不强持有目标对象的方法调用记录。 记录只保留目标的 WeakRef、创建时实例 ID 与方法名,并在调用时接收参数。 它不会保存 Callable,因此目标为 RefCounted 时不会被绑定回调意外延长生命周期。 invoked 只表示方法通过定义与参数数量预检且 Object.callv() 已返回;GDScript 无法捕获 callv 期间的类型错误或被调方法内部错误,因此这类错误不会转换为 failed

成员概览

类型 名称 签名
常量 STATUS_INVOKED const STATUS_INVOKED: StringName = &"invoked"
常量 STATUS_OWNER_RELEASED const STATUS_OWNER_RELEASED: StringName = &"owner_released"
常量 STATUS_METHOD_MISSING const STATUS_METHOD_MISSING: StringName = &"method_missing"
常量 STATUS_FAILED const STATUS_FAILED: StringName = &"failed"
方法 _init func _init(owner: Object = null, method_name: StringName = &"") -> void:
方法 invoke func invoke(arguments: Array = []) -> Dictionary:

常量

STATUS_INVOKED

  • API:public
  • 首次版本:unreleased
const STATUS_INVOKED: StringName = &"invoked"

方法已被调用并返回。

STATUS_OWNER_RELEASED

  • API:public
  • 首次版本:unreleased
const STATUS_OWNER_RELEASED: StringName = &"owner_released"

目标对象已释放。

STATUS_METHOD_MISSING

  • API:public
  • 首次版本:unreleased
const STATUS_METHOD_MISSING: StringName = &"method_missing"

目标对象不再提供记录的方法。

STATUS_FAILED

  • API:public
  • 首次版本:unreleased
const STATUS_FAILED: StringName = &"failed"

调用记录或参数未通过显式预检。

方法

_init

  • API:public
  • 首次版本:unreleased
func _init(owner: Object = null, method_name: StringName = &"") -> void:

创建弱方法调用记录。

参数:

名称 说明
owner 调用目标;无效目标会构造一个始终返回 failed 的记录。
method_name 调用时解析的方法名;空名称会构造一个始终返回 failed 的记录。

invoke

  • API:public
  • 首次版本:unreleased
func invoke(arguments: Array = []) -> Dictionary:

调用仍存活目标上的记录方法。 参数只在本次调用期间使用,不会保存到调用记录。返回 invoked 只代表定义与参数 数量预检通过且 callv 已返回,不代表 callv 期间没有类型错误或被调方法内部错误。

参数:

名称 说明
arguments 传给 Object.callv() 的调用时参数数组。

返回:调用状态、返回值与稳定目标身份。

结构:

  • arguments: Array of invocation-time arguments; values are never retained by this record.
  • return: Dictionary with status, invoked, value, error_code, initial_owner_instance_id, and method_name.