iOS 属性的属性

关于retain, assign, copy的含义已经有不少文章了,本身使用的经验:spa


赋值:ci

class.propertyA = instanceA
table

retain, assign, copy 只影响 instanceA的计数,可能增长,可能不变。到这句执行完毕为止,只要instanceA是合法的,propertyA就是合法的。class

retain, assign, copy: 变量

谁建立了instanceA仍是谁负责释放。但不一样的类型,释放的时间不一样。经验

retain 能够立刻释放。
assign 在 properyA 使用完毕后才能够释放
copy 能够立刻释放。


常见的retain赋值:tab

addSubview, rootViewController, addGesturedi

常见的assign赋值:(概念上,背后到底有没有保存变量可有可无)时间

presentModalViewController; presentPopover view


释放:

对于retain类型的属性:

class.propertyA = nil; // class.propertyA = xxx; 

至关于:[propertyA release];


而assign类型的属性(例如通常来讲IBOutlet )

要释放必须是:

[propertyA release];

而通常不该该释放,没有职责释放assign类型的属性。可是在ViewDidUnLoad里面有时须要释放IBOutlet来节省空间。