gpt4 book ai didi

ios - OBJ-C : How to release object which is return from method?

转载 作者:可可西里 更新时间:2023-11-01 17:08:58 26 4
gpt4 key购买 nike

我对从方法返回的对象的内存警告感到困惑。这是我的代码。

-(void)returnHeaderView
{
self.headerView=[[UIView alloc]init];
headerView.frame=CGRectMake(0, 0, 955, 45);


UILabel *fromLabel=[self returnLabel];
fromLabel.frame=CGRectMake(400, 5, 200, 44);
fromLabel.text=@"Open Time";
[headerView addSubview:fromLabel];
[fromLabel release];(in correct decrement of the reference count of an object that is not owned at this point by the caller)

[self.headerView addSubview:fromLabel];
[self.view addSubview:self.headerView];
[self.headerView release];

-(UILabel *)returnLabel
{
UILabel *label= [[UILabel alloc] init] ;
label.textColor = [UIColor blackColor];
label.font = FONT_TITLE;
label.numberOfLines=1;
label.textAlignment=UITextAlignmentLeft;
label.lineBreakMode=UILineBreakModeWordWrap;
label.backgroundColor=[UIColor clearColor];

return label;

}

这是我的两种方法。1.-(void)returnHeaderView。2.-(UILabel *)returnLabel.

-returnLabel 正在返回标签,方法返回的 UILabel 对象的引用传递给 returnHeaderView 方法的 fromLabel UILabel 对象。然后我释放 fromLabel 对象。

但是它给出了内存警告(正确减少调用者此时不拥有的对象的引用计数)。

所以有人建议我这段代码有什么问题。以及如何释放方法返回的对象。 Image is from my code which describes memory warnings generated by analyzing program.

谢谢。

最佳答案

在您的 returnHeaderView 中,您实际上并没有保留 fromLabel,因此您不拥有它,也不应该在那里发布它(警告“incorrect decrement of the此时调用者不拥有的对象的引用计数”)。

最好的选择是自动释放返回的标签:return [label autorelease]; 并让它存活直到周围的自动释放池被耗尽。请注意,这也意味着从 returnHeaderView 方法中删除 [fromLabel release]; 调用。

如果这听起来很复杂,请按照实际建议使用 ARC。

关于ios - OBJ-C : How to release object which is return from method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15803487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com