【问题标题】:self.customView.backgroundColor assignment causes leak?self.customView.backgroundColor 分配导致泄漏?
【发布时间】:2012-10-16 06:56:33
【问题描述】:

我正在为我正在开发的应用程序以编程方式创建自己的自定义视图模板。为了实现这一点,我有一个自定义视图控制器MyVC,并在其上添加了一个自定义视图myView,这是MyVC 的一个属性。这个类看起来像这样:

MyVC.h   
#import <UIKit/UIKit.h>

@interface MyVC : UIViewController{
MyCustomView *myView;
}

@property(nonatomic, retain) MyCustomView *myView

@end

在实现中,我想为“myView”分配背景颜色,我在 viewDidLoad 中执行类似的操作(在合成我的 corse 属性之后)

-(void)viewDidLoad{
self.myView = [[MyCustomView alloc] initWithFrame:someFrame];

self.myView.backgroundColor = [UIColor clearColor];  

}

现在,当我分析我的代码时,我在分配颜色时收到“对象可能泄漏”消息。是因为 myView 或背景颜色或两者都被保留了吗? 无论如何,我想知道如何正确地做到这一点而没有潜在的泄漏?

【问题讨论】:

  • 如何初始化 myView?
  • 我在“MyCustomView”类中重写了 -(id)initWithFrame:(CGRect)frame 方法。所以我在 ViewController 中的 viewDidLoad 中调用它,如下所示: self.myView = [[MyCustomView alloc] initWithFrame:someFrame];

标签: ios memory-leaks retain


【解决方案1】:

如果您不使用 ARC,您应该释放保留的财产:

-(void)viewDidLoad{
//allocate and initialize myView

self.myView = [[[MyCustomView alloc] initWithFrame:someFrame] autorelease];
self.myView.backgroundColor = [UIColor clearColor];  
}

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 2018-04-21
    • 1970-01-01
    • 2011-02-18
    • 2016-01-17
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多