You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从NS::Array中获取MTL::Device对象?Metal C++开发问题

解决Metal C++中NS::Array获取MTL::Device的类型不匹配问题

你遇到的错误是因为NS::Array::object()方法返回的是基类NS::Object*,无法直接赋值给派生类MTL::Device*变量,需要显式做类型转换。

推荐使用Metal C++ API提供的安全动态转换方式:

NS::Array* device_array = MTL::CopyAllDevices();
MTL::Device* device = NS::dynamic_cast<MTL::Device*>(device_array->object(0));

NS::dynamic_cast会在类型不匹配时返回nullptr,能避免类型错误导致的运行时问题。

如果你能确定数组内的元素一定是MTL::Device类型,也可以使用静态转换:

MTL::Device* device = static_cast<MTL::Device*>(device_array->object(0));

但这种方式没有类型校验,若实际类型不符会引发未定义行为,谨慎使用。

内容的提问来源于stack exchange,提问作者Nikita Chuguevskiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:55:26