什么时候应该在Objective c中使用assign?

时间:2012-02-03 20:15:13

标签: iphone objective-c xcode cocoa-touch cocoa

我理解我应该使用保留的原因,但为什么我应该使用assign? (除了避免保留周期

[编辑] 因此,如果我正确理解Chuck在https://stackoverflow.com/questions...上的答案,那么当我使用assign时,一旦变量超出方法范围就会失去范围,就像在常规C类型语言行为中一样?

4 个答案:

答案 0 :(得分:12)

您应该分配不是对象的东西。应该分配任何C类型(例如int,float,char,double,struct和enum)。

答案 1 :(得分:2)

我能想到的几个例子:

  1. 这不是一个对象。比如BOOL,int
  2. 大多数时候委托属性被分配(以防止循环)

答案 2 :(得分:1)

  1. 任何不是对象的东西
  2. 代表
  3. 不是顶级的IBOutlets(即视图已经保留的子视图)

答案 3 :(得分:1)

假设Chuck从链接问题的答案是正确的,那么Objective-C中并没有真正的“范围”。听起来你应该只使用assign来表示任何基元,比如int或BOOL。如果您需要拥有所有权,请使用retain(或其他命令,如Chuck所述)。