这个问题在这里已经有了答案:
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/