这个问题在这里已有答案:
参数类型是( NSDictionary<NSString *,id> * __nonnull ),它表示参数应该是字典,永远不能为空 . 那么 <NSString *, id> 意味着什么?是'NSString *'和'id'协议名称?这是否意味着字典必须是json?但NSString总是对象 . 有人帮吗?
NSDictionary<NSString *,id> * __nonnull
<NSString *, id>
它是 Objective C light weight generics 的语法 . 此功能主要用于修复Objective C - Swift互操作性问题 .
NSDictionary<NSString *,id> 表示字典键的类型应为 NSString ,它的值可以是任何类型的对象( id ) .
NSDictionary<NSString *,id>
NSString
id
For Example: 如果要声明仅包含NSString值的字典,可以将其声明为:
NSDictionary<NSString *,NSString *> *stringDictionary;
但是在Objective C中,您可以为此字典设置任意类型的值,不会出现错误 . 但是如果从swift类中使用相同的 stringDictionary 对象,则只能为此字典设置字符串值,否则会抛出错误 .
stringDictionary
有关详细信息,请查看article .
1 回答
它是 Objective C light weight generics 的语法 . 此功能主要用于修复Objective C - Swift互操作性问题 .
NSDictionary<NSString *,id>
表示字典键的类型应为NSString
,它的值可以是任何类型的对象(id
) .For Example: 如果要声明仅包含NSString值的字典,可以将其声明为:
但是在Objective C中,您可以为此字典设置任意类型的值,不会出现错误 . 但是如果从swift类中使用相同的
stringDictionary
对象,则只能为此字典设置字符串值,否则会抛出错误 .有关详细信息,请查看article .