Iphone 如何在iOS中释放子视图

Iphone 如何在iOS中释放子视图,iphone,ios,Iphone,Ios,这是添加子视图的代码,我想在添加子视图之前检查它 numberOfViews = [[GlobalVariable sharedInstance].itemNewsDetail count]; for (int i = 0; i < numberOfViews; i++) { @try{ CGFloat xOrigin = i * 320; CGRect frame; frame.size = CGSizeMake(320, 36

这是添加子视图的代码,我想在添加子视图之前检查它

numberOfViews = [[GlobalVariable sharedInstance].itemNewsDetail count];


for (int i = 0; i < numberOfViews; i++) {
    @try{
        CGFloat xOrigin = i * 320;
        CGRect frame;
        frame.size = CGSizeMake(320, 365);
        frame.origin.x = xOrigin;
        frame.origin.y = 0;

        detailVC = [[DetailScrollVC alloc]initWithNibName:@"DetailScrollVC" bundle:nil];
        detailVC.view.frame = frame;
        [detailVC loadViewByIndex:i];

        UIFont *font = detailVC.txtBodyNews.font;
        detailVC.txtBodyNews.font = [font fontWithSize:currentFontSize];
        detailVC.txtBodyNews.tag = i;

        [scrollDetail addSubview:detailVC.view];
        [scrollDetail sizeToFit];
        [detailVC.view release];
    }@catch (NSException *exception) {
        NSLog(@"ERROR HANDLING : %@",exception);
    }
}
numberOfViews=[[GlobalVariable sharedInstance].itemNewsDetail count];
对于(int i=0;i
如何检查和释放我以前添加的所有子视图

谢谢。

像这样试试

for (UIView *vie in self.view.subviews)
    {
        if([vie isKindOfClass:[UIImage class]])//here place your object class name for removeing that particuler subview from superview.
            [vie removeFromSuperview];
    }

请先在谷歌上搜索你的问题,如果你在谷歌上找不到你的解决方案,那么你应该发布你的问题。请在下面的链接中查看您的答案


  • 如果要从scrollview或任何其他视图中删除子视图,请尝试以下代码:

    NSArray *viewsToRemove = [yourView subviews];
    
    for (UIView *subviewElement in viewsToRemove) 
    {
        [subviewElement removeFromSuperview];
    }
    
     numberOfViews = [[GlobalVariable sharedInstance].itemNewsDetail count];
    
     for (UIView *subviewElement in scrollDetail.subviews) 
     {
         [subviewElement removeFromSuperview];
     }
    
     for (int i = 0; i < numberOfViews; i++)
     {
         @try
         {
            CGFloat xOrigin = i * 320;
            CGRect frame;
            frame.size = CGSizeMake(320, 365);
            frame.origin.x = xOrigin;
            frame.origin.y = 0;
    
            detailVC = [[DetailScrollVC alloc]initWithNibName:@"DetailScrollVC" bundle:nil];
            detailVC.view.frame = frame;
            [detailVC loadViewByIndex:i];
    
            UIFont *font = detailVC.txtBodyNews.font;
            detailVC.txtBodyNews.font = [font fontWithSize:currentFontSize];
            detailVC.txtBodyNews.tag = i;
    
            [scrollDetail addSubview:detailVC.view];
            [scrollDetail sizeToFit];
            [detailVC release];
         }
         @catch (NSException *exception) {
            NSLog(@"ERROR HANDLING : %@",exception);
         }
     }
    
    注意:-您的视图是任何类似scrollDetail或self.view等的东西


    我希望它能帮助你更好地理解。如果要从scrollview或任何其他视图中删除子视图,请尝试以下代码,谢谢:

    NSArray *viewsToRemove = [yourView subviews];
    
    for (UIView *subviewElement in viewsToRemove) 
    {
        [subviewElement removeFromSuperview];
    }
    
     numberOfViews = [[GlobalVariable sharedInstance].itemNewsDetail count];
    
     for (UIView *subviewElement in scrollDetail.subviews) 
     {
         [subviewElement removeFromSuperview];
     }
    
     for (int i = 0; i < numberOfViews; i++)
     {
         @try
         {
            CGFloat xOrigin = i * 320;
            CGRect frame;
            frame.size = CGSizeMake(320, 365);
            frame.origin.x = xOrigin;
            frame.origin.y = 0;
    
            detailVC = [[DetailScrollVC alloc]initWithNibName:@"DetailScrollVC" bundle:nil];
            detailVC.view.frame = frame;
            [detailVC loadViewByIndex:i];
    
            UIFont *font = detailVC.txtBodyNews.font;
            detailVC.txtBodyNews.font = [font fontWithSize:currentFontSize];
            detailVC.txtBodyNews.tag = i;
    
            [scrollDetail addSubview:detailVC.view];
            [scrollDetail sizeToFit];
            [detailVC release];
         }
         @catch (NSException *exception) {
            NSLog(@"ERROR HANDLING : %@",exception);
         }
     }
    
    numberOfViews=[[GlobalVariable sharedInstance].itemNewsDetail count];
    用于(滚动详细信息中的UIView*子视图元素。子视图)
    {
    [子视图元素从SuperView移除];
    }
    对于(int i=0;i

    我希望它能帮助你更好地理解。谢谢

    但是我在这个函数中仍然收到内存警告问题。。你觉得@chandan怎么样?在我的应用程序中,我构建了一个tableview,在选择action时,我将分页添加子视图,就像我给出的代码一样。我认为内存警告的问题是当我生成addsubview时,我只是再次添加它并替换addsubview。我已经应用了它,它工作正常。我补充了另一个答案。我已将我的答案与您的代码合并。如果仍然存在任何问题,请告诉我。警告可能是[detailVC.view release];所以改变它[detailVC release];并检查是否设置了scrollview的委托。有时它会发出警告。如果仍然存在问题,请将属性指定给scrollDetail并将其用作self.scrollDetail。谢谢我不能像你说的那样改变它,如果我改为[detailVC release],我的应用程序会出现lldb错误。谢谢你的帮助@chandan。。但我的应用程序仍然会强制关闭,并出现另一个错误。。lldb。你觉得怎么样?