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

And*_*win 1 objective-c ios watchkit

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

Mid*_* MP 7

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

NSDictionary<NSString *,id>意味着,字典键应该是类型NSString,它的值可以是任何类型的对象(id).

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

NSDictionary<NSString *,NSString *> *stringDictionary;
Run Code Online (Sandbox Code Playgroud)

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

请查看此文章以获取更多详细信息.