1

我是第一次使用泄漏仪器。我的代码中有两个泄漏,当我看到源代码时,它会显示在这两个粗体语句中......

- (id) initWithFrame: (CGRect) frame
{
    [self LoadMoviePlayer];

    **self= [super initWithFrame:frame];**  
    if (self==[super initWithFrame:frame])
    {
        CAEAGLLayer* eaglLayer = (CAEAGLLayer*) self.layer;
        eaglLayer.opaque = YES;

- (void) applicationDidFinishLaunching: (UIApplication*) application
{
    CGRect screenBounds = [[UIScreen mainScreen] bounds];

    m_window = [[UIWindow alloc] initWithFrame: screenBounds];
    **m_view = [[GLView alloc] initWithFrame: screenBounds];**

    [m_window addSubview: m_view];
    [m_window makeKeyAndVisible];
}

不知道下一步该怎么做才能解决问题。

4

1 回答 1

0

从我所见,第一次泄漏发生在您在 init 中执行代码而没有被初始化(您[super initWithFrame:]发生在您的 之后[self loadMoviePlayer]),第二次,乍一看,似乎是 m_view 被分配,但没有被释放,你可以解决它使用:

CGRect screenBounds = [[UIScreen mainScreen] bounds];

m_window = [[UIWindow alloc] initWithFrame: screenBounds];
m_view = [[GLView alloc] initWithFrame: screenBounds];

[m_window addSubview: m_view];
[m_view release];
[m_window makeKeyAndVisible];

这应该可以工作,因为 m_view 已经被添加到窗口中(因此被保留)。

于 2011-07-05T09:28:43.960 回答