参数类型为(NSDictionary<NSString *,id> * __nonnull
),这意味着参数应该是字典,永远不能为空。那么<NSString *, id>
意味着什么?是'NSString *'和'id'协议名称?
这是否意味着字典必须是json?但NSString总是对象。
有人帮吗?
答案 0 :(得分:6)
这是 Objective C轻量级泛型的语法。此功能主要用于修复Objective C - Swift互操作性问题。
NSDictionary<NSString *,id>
表示字典键的类型应为NSString
,其值可以是任何类型的对象(id
)。
例如: 如果要声明仅包含NSString值的字典,可以将其声明为:
NSDictionary<NSString *,NSString *> *stringDictionary;
但是在Objective C中,您可以为此字典设置任意类型的值,不会出现错误。但是如果你在swift类中使用相同的stringDictionary
对象,你只能为这个字典设置一个字符串值,否则会引发错误。
请查看此article了解详情。