@property definitions with ARC: strong or retain?
使用xcode 4.2和arc,我注意到为
1 | @property (nonatomic, retain) NSString * someString; |
1)现在不应该用
2)为什么自动生成的代码仍然使用EDOCX1[1]
3)在本财产声明中,对
我目前正在使用
1) Shouldn't retain now be replace with strong or weak?
不,你不能用弱的代替保留,它们是不同的。强是retain的100%同义词;它们是相同的。你也可以用,所以这里没有"应该"这个词。如果你愿意的话,你可以用强韧的来代替RETAIN,但是你不必这样做。
2) Why does the auto-generated code still use retain
为什么不呢?见(1)。保留是正确的,所以没有问题。
3) What is the correct replacement for retain in this property statement?
不需要更换RETAIN。
I'm currently debugging a problem using NSFetchRequest, and I thought this might be the source of the problem. Thoughts?
不是这样。
回答这三个问题:
retain implies__strong ownership
strong implies__strong ownership
在ARC之前,您必须"释放"保留的对象。这意味着保留有相反的部分。弧后不需要释放。所以要坚强。这是一个直观的线索,你不需要调用释放。
"保留"等于"强"。
例如,"strong"用于:
1 | @property (nonatomic, strong) NSString * someString; |
例如,使用"uu strong"表示:
1 2 3 4 | -(void) someMethod { __strong NSString* vStr = [[NSString alloc] initWithString:@"some string"]; } |
关于苹果文档。说:
属性
弱和强关键字作为新的声明属性引入,如下面的示例所示。
1 2 | // The following declaration is a synonym for: @property(retain) MyClass *myObject; property(strong) MyClass *myObject; |
苹果博士http://developer.apple.com/library/ios/releasenotes/obiodic/rn transitioningtoarc/introduction/introduction.html