有一个方法:
- (void)doSmth:(NSString *__strong*)str {
NSLog(@"%@", *str);
}
当一个方法参数的类后面跟着__strong是什么意思?为什么有两个星号?
有一个方法:
- (void)doSmth:(NSString *__strong*)str {
NSLog(@"%@", *str);
}
当一个方法参数的类后面跟着__strong是什么意思?为什么有两个星号?
两个星号表示这是一个指向指针的指针。
__strong
是 __weak
的反义词,你可能已经知道了。它意味着我们在谈论一个强引用。只要我们保持对该引用的持有,对象就不会被释放。
此外,我们需要知道编写 __strong Type *varName
在技术上是错误的(尽管它可以工作,并且几乎每个人都使用它)。正确的语法是 Type * __strong varName
。
你的语法是指向 NSString
的强引用的指针。这意味着当一个对象从方法中返回时,必须有一个 release
调用来正确地释放该对象。
请参见相关问题: NSError 和 __autoreleasing 和官方文档: 过渡到 ARC