在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*
作为前缀,除非它通过引用返回一个值,而此方法不这样做。。。