关于C#:如何简单地选择@property的属性?

How to choose the attributes of a @property in a nutshell?

本问题已经有最佳答案,请猛点这里访问。

如何快速知道要添加到@property中的属性?

我是为@property (strong)@property (weak)而得到的,我认为:strong如果类"拥有"所指的实例;weak如果它仅仅是对一个对象的引用,而这个对象的存在不被我们当前的类所管理。

如果属性是通过从Interface Builder中拖放创建的,则有时会有神秘的unretain_unsafe左右。听起来很复杂,但我相信Xcode知道它的作用…

  • 我也理解,retainassign是不赞成的……

  • 对于NSString属性,最好(强制)使用copy

  • 但是如果我想要一个@property到一个int或者一个enum呢?

  • 如果我的@property指向一个单例,我应该选择weak属性吗?

你看:关于这些属性的问题太多了!

我想,像这里的一些成员一样,对这些属性有一个简短而清晰的解释是很好的:)


一些没有特别顺序的笔记

  • weak的附加功能是在释放所引用的对象时将其清空,因此不会留下指向垃圾的悬空指针。
  • 不强制使用copy语义和NSString属性,但强烈建议使用。虽然NSString是不可变的,但您的属性可能被设置为可变的字符串子类,因此如果您不希望它从您的下面更改,您应该使用copy
  • 标量属性类型的经验法则非常简单:它们不进行引用计数,因此strongweak都不适用。但它们可以是readonlyreadwrite,这取决于您需要什么。