Objective c 何时使用自动释放变量?
在什么情况下我应该使用自动释放变量? 以下哪种方法最好Objective c 何时使用自动释放变量?,objective-c,memory-management,autorelease,Objective C,Memory Management,Autorelease,在什么情况下我应该使用自动释放变量? 以下哪种方法最好 使用obj=[[u className alloc]init]autorelease], obj=[[[u className alloc]init]并将obj作为[obj release] 请帮忙 另外,当我希望创建一个本地对象并在如下循环控制结构中使用时,应该使用什么 for(int i = 0;i<10;i++) { _className obj = [[_className alloc]init];//Should
obj=[[u className alloc]init]autorelease],
obj=[[[u className alloc]init]
并将obj作为[obj release]
请帮忙
for(int i = 0;i<10;i++)
{
_className obj = [[_className alloc]init];//Should I use autorelease here?
.
. // Use this obj..
.
[obj release];//If autoreleased is not used...
}
for(inti=0;i最好的方法是使用ARC,而不必担心它
但是如果你不使用ARC,我通常更喜欢案例2。问题是当前的自动释放池什么时候会被耗尽。如果有一个循环需要做很多工作,或者我在一个库中不知道它将运行在什么上下文中,我可以控制对象何时被释放,而不是自动释放,并且它发生在某个未知的时间我可以为循环创建自己的自动释放池,但我更喜欢显式释放
我看到案例1使用的一个地方是将对象分配给属性时,因此它将是一个单行语句,使用autorelease而不是allocate、assign to property和release
你不使用ARC有什么原因吗?如果你不使用ARC,那么很快我会说,当你不知道变量的范围时,使用自动释放。当你知道变量的范围时,使用释放。你应该移动到ARC
,因为这样你就不需要释放任何东西了。