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

Rust Cocoa 框架如何创建 NSDictionary?initWithObjectsAndKeys_ 入参疑问

NSDictionary 两种创建方法的差异说明

你观察到的参数差异是Objective-C原生接口和Rust FFI绑定的特性导致的:

  • Objective-C原生的 initWithObjectsAndKeys: 本身是可变参数方法,方法签名里的firstObject只是可变参数列表的第一个入参,使用时需要在后面依次传入「键1、对象2、键2……」的配对值,最后以nil作为参数结束的标记,功能和接收数组参数的dictionaryWithObjects:forKeys:count:完全等价,只是入参形式不同。
  • Rust的cocoa库绑定受限于跨语言FFI的实现限制,没法直接支持Objective-C的可变参数调用语法,所以只暴露了仅带首个参数的方法签名。如果要在Rust侧创建NSDictionary,更推荐使用同特征下的initWithObjects_forKeys_count()方法,直接传入对象指针数组、键指针数组和对应数量即可,调用逻辑更安全,也更符合Rust的编码习惯。

相关代码示例:

// Objective-C 数组参数创建NSDictionary示例
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects
                                                       forKeys:keys
                                                         count:count];
// Rust cocoa绑定中initWithObjectsAndKeys_的方法签名
unsafe fn initWithObjectsAndKeys_(self, firstObject: *mut Object) -> *mut Object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:27:00