与ARC的@属性定义:强或保留?
使用Xcode 4.2和ARC,我注意到NSManagedObject的自动生成的代码仍然读取像这样的属性: 
 @property (nonatomic, retain) NSString * someString; 
  1)现在不应该retain weak吗? 
  2)为什么自动生成的代码仍然使用retain 
  3)什么是在这个财产声明retain正确的替代? 
 我目前正在使用NSFetchRequestdebugging一个问题,我认为这可能是问题的根源。 思考? 
1)现在不应该保留强弱吗?
不可以,你不能用弱来取代保留; 他们是不同的。 而强者是保留的100%同义词; 他们是相同的。 你可以使用,所以这里没有“应该”。 如果你愿意的话,你可以用强壮的替代保留,但是你不需要。
2)为什么自动生成的代码仍然使用保留
为什么不? 参见(1)。 保留是正确的,所以没有问题。
3)什么是在这个财产声明保留正确的替代?
没有必要取代保留。
我目前正在使用NSFetchRequestdebugging一个问题,我认为这可能是问题的根源。 思考?
事实并非如此。
 为了回答这三个问题: retain和strong是彼此的同义词,所以两者都是正确的。  文档说明 
retain意味着__strong所有权
strong意味着__strong所有权
在ARC之前,你必须“释放”一个被保留的对象。 这意味着保留有相反的部分。 ARC之后,你不需要释放。 所以用强。 它的视觉线索,你不需要调用释放。
“保留”等于“强”。
例如:使用“strong”
 @property (nonatomic, strong) NSString * someString; 
例如:“__strong”
 -(void) someMethod { __strong NSString* vStr = [[NSString alloc] initWithString:@"some string"]; } 
在苹果文件。 说:
属性属性
弱和强关键字作为新的声明属性属性引入,如以下示例所示。
 // The following declaration is a synonym for: @property(retain) MyClass *myObject; property(strong) MyClass *myObject;