我最近开始研究别人的代码库,我遇到了很多这样的
@property (strong, retain) TYPE *iVar;
我从未见过在同一个属性声明中同时使用 Strong 和 Retain。我很惊讶它甚至可以编译,因为保留已经意味着强大。
该项目使用arc,并且已有几个月的历史,因此遗留问题在这里不是问题,部署目标是iOS6。
你有什么正当理由要这样做吗?
我最近开始研究别人的代码库,我遇到了很多这样的
@property (strong, retain) TYPE *iVar;
我从未见过在同一个属性声明中同时使用 Strong 和 Retain。我很惊讶它甚至可以编译,因为保留已经意味着强大。
该项目使用arc,并且已有几个月的历史,因此遗留问题在这里不是问题,部署目标是iOS6。
你有什么正当理由要这样做吗?
没有理由同时使用属性声明retain
和strong
-根据 Apple 的文档,两者是同义词:
关键字
weak
和strong
作为新声明的属性引入,如以下示例所示。
// The following declaration is a synonym for: @property(retain) MyClass *myObject;
@property(strong) MyClass *myObject;
如果您使用的是 ARC,那么只需使用 strong。
现在可能允许将两者混合,但将来可能会产生编译器警告/错误。更不用说它看起来真的很奇怪。