代码之家  ›  专栏  ›  技术社区  ›  Jonathan

你能在同一个属性声明中同时使用strong和retain吗?

  •  2
  • Jonathan  · 技术社区  · 11 年前

    我最近开始研究别人的代码库,我遇到了很多这样的问题

    @property (strong, retain) TYPE *iVar;
    

    我从未见过在同一个属性声明中同时使用Strong和Retain。我很惊讶它竟然能编译,因为retain已经暗示了强大。

    该项目使用arc,并且已经有几个月的历史了,所以遗留问题不在这里,部署目标是iOS6。

    你想这么做有什么正当理由吗?

    2 回复  |  直到 11 年前
        1
  •  2
  •   Sergey Kalinichenko    11 年前

    没有理由同时使用属性声明 retain strong - according to Apple's documentation ,这两个是同义词:

    关键词 weak 坚强的 作为新声明的属性属性引入,如以下示例所示。

    // The following declaration is a synonym for: @property(retain) MyClass *myObject;
    @property(strong) MyClass *myObject;
    
        2
  •  0
  •   Steve Wilford    11 年前

    如果你正在使用ARC,那么就使用strong。

    现在可能允许将两者混合使用,但将来可能会产生编译器警告/错误。更不用说它看起来真的很奇怪。