Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从视图中删除并释放类型对象_Ios - Fatal编程技术网

Ios 从视图中删除并释放类型对象

Ios 从视图中删除并释放类型对象,ios,Ios,我有一个类调用帖子,它是一个视图……我有时会在我的主视图中添加它,如下所示: 锁定如何从我的自我中移除和释放此对象。查看。。。。 我刚上了这门课: @interface Post : UIView{ UILabel * label1; UILabel * label2; UILabel * label3; } @implementation Post -(void)init { self = [super init]; if (self) {

我有一个类调用帖子,它是一个视图……我有时会在我的主视图中添加它,如下所示: 锁定如何从我的自我中移除和释放此对象。查看。。。。 我刚上了这门课:

@interface Post : UIView{
      UILabel * label1;
      UILabel * label2;
      UILabel * label3;
}
@implementation Post
-(void)init
{
    self = [super init];
    if (self) {
         label1 = [[UILabel alloc]init];
         label2 = [[UILabel alloc]init];
         label3 = [[UILabel alloc]init];
         label1.frame = CGRect(10,10,100,30);
         label2.frame = CGRect(10,60,100,30);
         label3.frame = CGRect(10,110,100,30);

    }
    return self;
}
@end
这个主类控制器

@implementation HomeViewController
-(void)viewDidLoad{
     Post *p = [[Post alloc]init]
     p.frame = CGRect(0,0,0,320,460);
     p.backgroundColor = [UIColor blue];
     [self.view addsubview: p];
     [p release];


     Post *p2 = [[Post alloc]init]
     p2.frame = CGRect(0,0,0,320,460);
     p2.backgroundColor = [UIColor blue];
     [self.view addsubview:p2];
     [p2 release];

     Post *p3 = [[Post alloc]init]
     p3.frame = CGRect(0,0,0,320,460);
     p3.backgroundColor = [UIColor blue];
     [self.view addsubview:p3];
     [p3 release];

}
-(void)RemoveAllPosts
{
//How to remove and release all post from self.view???
}
@end

请尝试以下代码行

for(UIView *viewInner in self.view.subviews) {
    if([viewInner isKindOfClass:[Post class]])
        [viewInner removeFromSuperview];
}

请尝试以下代码行

for(UIView *viewInner in self.view.subviews) {
    if([viewInner isKindOfClass:[Post class]])
        [viewInner removeFromSuperview];
}

在你的
帖子
类中包含
-(void)dealloc{[label1 release];[label2 release];[label3 release];}
方法,Paramasivan已经回答了你的问题Ohh好!!如果我在发布我的对象帖子之前发布我自己的帖子,我就不需要在dealloc中发布,对吗?看起来是这样的:[p.label1版本];[p.label2释放];[p.label3释放];[p释放];您可以进行这种奇怪的编码,但dealloc是释放您所分配对象的最佳位置。在您的
Post
类中包含
-(void)dealloc{[label1 release];[label2 release];[label3 release];}
方法,Paramasivan已经回答了您的问题Ohh ok!!如果我在发布我的对象帖子之前发布我自己的帖子,我就不需要在dealloc中发布,对吗?看起来是这样的:[p.label1版本];[p.label2释放];[p.label3释放];[p释放];您可以进行这种奇怪的编码,但dealloc是释放已分配对象的最佳位置,您可以在将其添加到子视图之后通过添加release命令来释放它。所以,我想把它从superview中删除就足够了。哦,没错,我想就是这样!如果我试图释放它,您已经通过在将其添加到子视图后添加release命令释放了它。所以,我想把它从superview中删除就足够了。哦,没错,我想就是这样!如果我试图释放它就会崩溃