ios - (NSDictionary<NSString *,id> * __nonnull) 是什么意思?

标签 ios objective-c watchkit

这个问题在这里已经有了答案:





Odd property declaration syntax containing angular brackets <>

(2 个回答)


6年前关闭。




参数类型为(NSDictionary<NSString *,id> * __nonnull),表示参数应该是字典,不能为空。那么<NSString *, id> 是什么意思?方法? 'NSString *' 和 'id' 协议(protocol)名称是什么?
这是否意味着字典必须是json?但是 NSString 总是对象。
有人帮忙吗?

最佳答案

它是 的语法。 Objective C 轻量级泛型 .此功能主要用于修复 Objective C - Swift 互操作性问题。
NSDictionary<NSString *,id>意思是,字典键的类型应该是 NSString它的值可以是任何类型的对象( id )。

例如:
如果你想声明一个只包含 NSString 值的字典,你可以像这样声明它:

NSDictionary<NSString *,NSString *> *stringDictionary;

但是在 Objective C 中,你可以为这个字典设置任何类型的值,不会有错误。但是如果你使用相同的stringDictionary来自 swift 类的对象,你只能给这个字典设置一个字符串值,否则它会抛出一个错误。

请查看 article更多细节。

关于ios - (NSDictionary<NSString *,id> * __nonnull) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147901/

相关文章:

ios - MKMapView 显示错误保存的区域

ios - 无法加载 Collection View

ios - 删除行: error 'Invalid update: invalid number of rows in section 0'

swift - 当最前面的应用程序收到通知时播放触觉

swift - 我可以在 watchOS 3 上将 UIGraphicsImageRenderer 与 WatchKit 一起使用吗?

ios - 归档为 Xcode 构建的 Unity 应用程序错误 : Invalid bitcode version (Producer: '802.0.42.0_0' Reader: '800.0.42.1_0' )

ios - 以横向模式打开 UIImagePickerController

iphone - 如何在 iphone sdk 中添加视频作为 HUD 元素

ios - 未保存到核心数据数据库的对象

Xcode 无法安装 WatchKit App :"App installation failed Could not connect to the device."