在iPhone中发布视图
可能重复:在iPhone中发布视图,iphone,ios,ios4,Iphone,Ios,Ios4,可能重复: 我遇到了一个很大的问题,请帮我解决同样的问题 我正在以自定义方式创建一个视图 UIView *view = [self getCustomVIew:index]; [view release]; view = nil; 在getCustomVIew:index中,我分配并返回视图。当我释放视图为 [view release]; 它不会从getCustomView:index中释放视图,并且引用计数不会减少 请帮助我释放从getCustomVIew:ind
我遇到了一个很大的问题,请帮我解决同样的问题 我正在以自定义方式创建一个视图
UIView *view = [self getCustomVIew:index];
[view release];
view = nil;
在getCustomVIew:index
中,我分配并返回视图。当我释放视图为
[view release];
它不会从getCustomView:index
中释放视图,并且引用计数不会减少
请帮助我释放从getCustomVIew:index
返回的视图,并保持内存大小
当视图被删除时,Instruments只是增加了程序的整体大小。您不需要在
getCustomVIew:
中释放该视图。而是在返回之前发送自动释放
信号。在您也获得了视图
对象之后,您不需要释放它,因为它已经自动释放了 您不需要从该getCustomVIew
方法中释放视图。从返回的视图应已标记为autorelease
-(UIView*) customView{
UIView *v = [[UIView alloc] init];
...
return [v autorelease];
}
您的代码似乎很好,如果您试图使用“view.reatinCount”来确保视图已发布,那么这是不好的
以下是您可以参考的确切副本:
您如何知道它没有被递减?要计数的消息通常不准确。另外,由于getCustomView正在返回一个拥有的对象,因此请将MethodName重命名为newCustomView。不要将get作为方法的前缀。这在可可中有着特殊的意义,但事实并非如此。重新计算是没有用的。不要调用它。经过编辑以反映iOS或Cocoa中的任何方法都不应以get*
作为前缀,除非它通过引用返回一个值,而此方法不这样做。。。