(NSDictionary <nsstring *,id =“”> * __nonnull)是什么意思?

时间:2015-10-15 11:55:04

标签: ios objective-c watchkit

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

1 个答案:

答案 0 :(得分:6)

这是 Objective C轻量级泛型的语法。此功能主要用于修复Objective C - Swift互操作性问题。

NSDictionary<NSString *,id>表示字典键的类型应为NSString,其值可以是任何类型的对象(id)。

例如: 如果要声明仅包含NSString值的字典,可以将其声明为:

NSDictionary<NSString *,NSString *> *stringDictionary;

但是在Objective C中,您可以为此字典设置任意类型的值,不会出现错误。但是如果你在swift类中使用相同的stringDictionary对象,你只能为这个字典设置一个字符串值,否则会引发错误。

请查看此article了解详情。