我看到这段代码定义了一个常量,并且在理解使用方法时遇到了问题。
static __unsafe_unretained NSString * const kUserIdKey = @"USER_ID";
我假设__unsafe_unretained这里是弱者而没有为ios 4或更早的nil输出?这是正确的吗?为什么我们需要这个?
答案 0 :(得分:2)
您对__unsafe_unretained
的理解基本上是正确的 - 这样的引用是不受管理的,ARC将忽略存储在变量中的任何内容。
为什么我们需要这个?
你不是,在这个特定的例子中是没有意义的。常量NSString
值是不朽的,它们永远不会被ARC收集。您可以使用kUserIdKey
或__strong
或__weak
注释__unsafe_unretained
,但不会产生任何影响 - @"USER_ID"
将始终存在。