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中删除就足够了。哦,没错,我想就是这样!如果我试图释放它就会崩溃