2011-07-14 20 views
0

私たちのアプリケーションでは大きなメモリの問題が見つかりました。私たちはUITextFieldをサブクラス化し、これらをすべてのメインビューに追加しました。メインビューは正しく割り当て解除されていますが、サブクラスのdeallocメソッドは決してヒットしません。ここに私たちのサブクラスである:サブクラス化されていないコントロールは公開されていません

ヘッダー:

#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 
#import "MyEntities.h" 
#import "MyControlHelper.h" 

@interface MyTextField : UITextField { 
    MyControlHelper *myHelper; 
    UIView *disabledEffect; 
} 

@property (nonatomic, retain) MyControlHelper *myHelper; 
@property (nonatomic, retain) UIView *disabledEffect; 

@end 

実装:

#import "MyTextField.h" 

@implementation MyTextField 

@synthesize myHelper; 
@synthesize disabledEffect; 

-(id) initWithCoder:(NSCoder *)aDecoder{ 
    if (self = [super initWithCoder:aDecoder]){ 
     myHelper = [[MyControlHelper alloc] init]; 
     [myHelper setBoundTextField:self]; 
     [myHelper SetupKeyboardListener]; 
     [self setReturnKeyType:UIReturnKeyDone]; 
     self.autocorrectionType = FALSE; 
     self.delegate = myHelper; 
    } 

    return self; 
} 

-(id) init{ 
    if (self = [super init]){ 
     myHelper = [[MyControlHelper alloc] init]; 
     [myHelper setBoundTextField:self]; 
     [myHelper SetupKeyboardListener]; 
     [self setReturnKeyType:UIReturnKeyDone]; 
     self.autocorrectionType = FALSE; 
     self.delegate = myHelper; 
    } 

    return self; 
} 

-(id)initWithFrame:(CGRect)frame{ 
    if (self = [super initWithFrame:frame]){ 
     myHelper = [[MyControlHelper alloc] init]; 
     [myHelper setBoundTextField:self]; 
     [myHelper SetupKeyboardListener]; 
     [self setReturnKeyType:UIReturnKeyDone]; 
     self.autocorrectionType = FALSE; 
     self.delegate = myHelper; 
    } 

    return self; 

} 

-(void)dealloc{ 
    self.myHelper = nil; 
    self.disabledEffect= nil; 
    [super dealloc]; 
} 

@end 

任意の助けいただければ幸いです。

乾杯。

+0

以下の回答は、どのようにお手伝いしましたか? – marcus

答えて

0

myHelperリファレンスに問題がある可能性があります。あなたは(nonatomic, retain)のプロパティとしてそれを宣言しました。 MyControlHelperクラスにもMyTextFieldのプロパティが保持されている場合は、循環参照を作成していて、フィールドはmyHelperを保持しています。

この場合、MyControlHelper以内のテキストフィールドのプロパティを(nonatomic, assign)と宣言してサイクルを解決することをお勧めします。

MyControlHelperのコードも投稿すると役に立ちます。

+2

コードを見ると、私の最初の容疑者は 'boundTextField';) – deanWombourne

+0

@deanWombourne実際には、私が意味していたプロパティです、私は何とかそれを指摘するために逃した...ありがとう(+1)! – marcus

関連する問題