什么是*__强*意味着什么?

Gik*_*kas 2 objective-c

有一种方法:

- (void)doSmth:(NSString *__strong*)str {
    NSLog(@"%@", *str);
}
Run Code Online (Sandbox Code Playgroud)

__strong遵循方法参数的类是什么意思?为什么有两个星号?

Sul*_*han 6

两个星号表示它是指向指针的指针.

__strong__weak你可能已经知道的相反.这意味着我们在这里谈论一个强有力的参考.虽然我们持有该引用,但该对象不会被释放.

此外,我们需要知道写作__strong Type *varName在技​​术上是错误的(尽管它起作用,几乎每个人都使用它).正确的语法是Type * __strong varName.

您的语法是指向强引用的指针NSString.这意味着当从方法返回一个对象时,必须release从ARC调用以正确地释放该对象.

请参阅相关问题: NSError和__autoreleasing以及官方文档: 转换到ARC