レイアウトに.xibファイルを使用し、追加のセットアップにバッキングクラスを使用するカスタム作成のUIViewがいくつかあります。alloc / initを使用してこれらのクラスを作成し、カスタムinitメソッドでloadNibNamedを呼び出しましたが、そうするとメモリリークが発生していました。誰かがalloc部分が実際にリークしている自己オブジェクトを作成したことを指摘したので、私はinitメソッドをこれに調整しました:
- (id)init
{
[self autorelease];
self = [[[[NSBundle mainBundle] loadNibNamed:@"AssignmentView" owner:nil options:nil] lastObject] retain];
[self setupBranding];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
[self addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
return self;
}
ただし、分析コードを実行すると、「[(superまたはself)init...]'の結果に設定されていないときに'self'を返す」という警告が表示されます。だから私の質問は、バッキングクラスでカスタムUIViewを実行するための正しい方法は何ですか?
尋ねられたので、私はこの上記のコードを次のように使用しました:
AssignmentView * assignmentView = [[AssignmentView alloc] init];
[self.view addSubview:assignmentView];