私のコードを浄化していますが、これまでのところとてもうまくいきました。私が見つけることができないもの!私のUITableViewController viewDidLoadメソッドでUIViewのメモリリークを特定できません
インスツルメンツ私のUITableViewControllerに次のコードに私を指す:
- (void)viewDidLoad
{
[super viewDidLoad];
self.parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
self.parentView.backgroundColor = [UIColor clearColor];
self.parentView.opaque = NO;
self.mainButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.mainButton setTitleColor:[UIColor colorWithRed:0.16f green:0.16f blue:0.16f alpha:1.0] forState:UIControlStateNormal];
[self.mainButton setTitleShadowColor:[UIColor whiteColor] forState:UIControlStateNormal];
self.mainButton.titleLabel.shadowOffset = CGSizeMake(0.0, 1.0);
[self.mainButton setBackgroundImage:[UIImage imageNamed:@"grayButton.png"] forState:UIControlStateNormal];
self.mainButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
self.mainButton.frame = CGRectMake(0, 4, 102, 35);
self.mainButton.center = CGPointMake(160, 25);
[self.mainButton setTitle:@"Control" forState:UIControlStateNormal];
[self.mainButton addTarget:self action:@selector(controlIt) forControlEvents:UIControlEventTouchUpInside];
[self.parentView addSubview:self.mainButton];
self.tableView.tableHeaderView = self.parentView;
}
parentView
はdealloc
で放出されます。私もmainButton
をリリースしましたが、この場合にはそれが必要かどうかはわかりません。
それは、このラインとは何かを持っている場合、私は思ったんだけど:
self.tableView.tableHeaderView = self.parentView;
奇妙なことである、という私はそれので、ビューコントローラのメインビューだと思うのアドレスにリークポイント75回以上のメモリの保持/解放/自動解放の履歴があります。
本当にこれに固執して、いくつかのガイダンスに感謝します。
あなたが指摘している問題は問題です。 parentViewを別のプロパティとして設定すると、保持カウントが+1になり、そのリークが発生します。そのプロパティを-deallocでnilに設定します。 –
これはどのようにメモリ管理の面で機能しますか? 'dealloc'でparentViewをnilに設定すると、保持カウントは1減算されるか、それとも完全に消去されますか? – sooper
これは1だけ減額されます。 –