我正在尝试通过具有以下签名的GData.ContactsContact.get_photo((检索联系人照片:
get_photo(
GDataContactsContact *self,
GDataContactsService *service,
gsize *length, (out caller-allocates)
gchar **content_type, (out caller-allocates)
GCancellable *cancellable,
GError *error
)
但是,如果我只是为此将变量声明为"调用者分配"(例如。let length;
( 或实例化一个新的长度G_TYPE,结果始终为:
Gjs-Message: JS ERROR: Unsupported type guint64 for (out caller-allocates)
我只能找到一些类似问题的旧示例,它们都涉及注释错误:
似乎该方法注释不正确。它应该是(出调用者分配((数组长度=长度(。
这是一个我可以解决和/或提交错误的内省错误,还是我误解了 Javascript 中的"出调用者分配"用法?
您可以使用另一个函数来解决它,但似乎这个函数也没有正确注释。length
参数应批注为返回值的长度。请在 GData 的 https://bugzilla.gnome.org 提交错误报告。
它应该工作的方式是,输出参数(即使是那些标记为C代码的调用者分配的参数(不会被传入;一切都发生在引擎盖下。而且,长度参数仅在内部使用,以便设置它们引用的数组。因此,调用该函数的预期方法是:
let [photoBytes, contentType] = contact.get_photo(service, cancellable);