0

Xcodeの分析ツールを使用すると、このUITableView割り当てに対して次のメモリリーク警告が表示されます-

Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1

self.contentTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped];  
self.contentTableView.delegate = self;
self.contentTableView.dataSource = self;
self.contentTableView.scrollEnabled = NO;
self.contentTableView.backgroundColor = [AppDelegate appMainColor];
self.contentTableView.separatorColor = [UIColor whiteColor];
self.contentTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
[self.view addSubview:self.contentTableView];

誰かがこの警告に遭遇しましたか?解決?

ありがとう!

4

2 に答える 2

0

わかりました、これは推測です。私は長い間レガシーターゲットに取り組んできませんでした。私は後のターゲットにデプロイしています。ただし、を使用するautoreleaseか、手動でリリースすることができますUITableView。このようなものが機能する可能性があります、

self.contentTableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped] autorelease];

または、プロパティを使用している場合は、deallocメソッド内でリリースします。

[tableView release];

:私は長い間非ARC環境で作業していません。私の構文は(おそらく)間違っている可能性があり、構文の問題を解決する必要があります。

于 2012-09-25T19:18:53.673 に答える
0

ARCはオプションではないため、コードの所有権ルールに従う必要があります。を使用してオブジェクトを作成したallocので、後で取得することを確認する必要がありますrelease。これを行う簡単な方法は、autoreleaseインスタンス化したときに送信し、次のようにプロパティに割り当てることです。

self.contentTableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped] autorelease];  
于 2012-09-25T19:22:21.167 に答える