Утечка памяти при создании подкласса UIView - PullRequest
0 голосов
/ 17 февраля 2010

У меня утечка памяти при использовании только подкласса UIView. Он пропускает 128 байтов и проходит через CoreGraphics и т. Д. Мой подкласс - это просто сгенерированный скелет, в котором ничего нет. Когда я использую только UIView вместо ScrollView, об утечках не сообщается. Что бы это могло быть и чего мне не хватает?

Большое спасибо, ALex.

=====================================

//----  main.m

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {

  //  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, @"testScrollViewAppDelegate");
  //  [pool release];
    return retVal;
}

//---testScrollViewAppDelegate.h

#import <UIKit/UIKit.h>

@interface testScrollViewAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
}

@property (nonatomic, retain) UIWindow *window;

@end


//--testScrollViewAppDelegate.m

#import "testScrollViewAppDelegate.h"
#import "ScrollView.h"

@implementation testScrollViewAppDelegate

@synthesize window;


- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.backgroundColor =  [UIColor whiteColor];

    CGRect frame =  CGRectMake(10, 150, 300, 200);
    ScrollView* scrollView = [[ScrollView alloc] initWithFrame:frame];

    [window addSubview:scrollView];

    [scrollView release],scrollView = nil;

    [window makeKeyAndVisible];
}


- (void)dealloc {
    [window release];
    [super dealloc];
}


@end

//-- ScrollView.h

#import <UIKit/UIKit.h>


@interface ScrollView : UIView {

}

@end


//-- ScrollView.m

#import "ScrollView.h"


@implementation ScrollView


- (id)initWithFrame:(CGRect)frame {

    if (self = [super initWithFrame:frame]) {
        // Initialization code
    }
    return self;

  }

- (void)drawRect:(CGRect)rect {
    // Drawing code
}

- (void)dealloc {
    [super dealloc];
}


@end

1 Ответ

0 голосов
/ 17 февраля 2010

Почему вы закомментировали код NSAutoreleasePool? Если нет пула автоматического выпуска, многие объекты ObjC и CF будут пропущены.

(Также, пожалуйста, покажите нам, как вы реализовали -drawRect:.)

...