ARC的@property定义:强还是保留?

one*_*son 80 properties objective-c retain nsmanagedobject automatic-ref-counting

使用Xcode 4.2和ARC,我注意到自动生成的代码NSManagedObject对于属性仍然如下:

@property (nonatomic, retain) NSString * someString;
Run Code Online (Sandbox Code Playgroud)

1)retain现在不应该用strong或替换weak

2)为什么自动生成的代码仍然使用 retain

3)retain在此属性声明中,正确的替换是什么?

我正在调试使用的问题NSFetchRequest,我认为这可能是问题的根源.思考?

mat*_*att 110

1)现在不应该保留强或弱的替代?

不,你不能用弱者代替保留; 它们是不同的.而强者是保留的100%同义词; 他们是相同的.你可以使用其中之一,所以这里没有"应该".如果您愿意,可以用强力替换保留,但您不必这样做.

2)为什么自动生成的代码仍然使用retain

为什么不?见(1).保留是正确的,所以没有问题.

3)在此属性声明中保留的正确替换是什么?

无需替换保留.

我目前正在使用NSFetchRequest调试问题,我认为这可能是问题的根源.思考?

事实并非如此.

  • 不确定究竟是什么情感架构.你能举一个"寒冷,晴朗的日子吗?"的榜样吗?;-) false和NO是同义词,但我们在Objective-C中按惯例使用NO.有理由保持一致; 不一致是好的,但证明有价值的责任在于一个违背惯例,而不是坚持它的人. (12认同)
  • 我认为,对于一个痴迷于社区(并且正确如此!)的标准和对Apple Way(s)的合规性,只看到合成模型中的保留是不合适的.我变得坚强只是为了迂腐.首先,在六个其他的小事情中,使一个大型项目的语法不正确变得容易一些. (9认同)
  • 尽管如此,@ EricGoldberg确实有一点:会议很重要.而且因为你的代码中的其他地方你将成为`__strong`(没有`__retain`)你可能想转而使用`strong`来保持一致性.这类似于以一致的方式缩进代码,即使代码在没有这个的情况下运行正常. (9认同)
  • @matt:如果你看看我原来的评论,那个你指责我"感情上"编码的那个(无论是什么),你会看到我使用"posit"和"只是为了迂腐".我实际上建议"应该"而不是"是". (3认同)

Phl*_*bbo 40

要在一个中回答所有三个问题:retain并且strong彼此是同义词,所以两者都是正确的.文件说明

retain意味着__strong所有权

strong意味着__strong所有权

  • 如果你在项目上运行ARC重构,它会将所有那些`retain`s转换为`strong`s.所以我的印象是`strong`是首选属性,但NSManagedObject生成器尚未更新.但这只是猜测; 也许Apple没有人认为这种区别很重要. (6认同)
  • 除非我在这里遗漏了一些东西,否则这完全可以解释.Xcode创建的代码是正确的,因为retain的工作方式同样强大,那么您的问题在哪里? (3认同)