1

このコードはリークしています。パフォーマンスツールは、このコードブロックで2つのリークを非難しています。コメントしてもリークは発生しません。それを固定する助けがあれば大歓迎です。

リーク:

Malloc48バイト

NSCFarray32バイト

コードブロック:

    NSArray *myArray = [[NSArray alloc] initWithObjects: @"Add", @"Edit", nil];
    segmentControl = [[UISegmentedControl alloc] initWithItems:myArray];
    [myArray release];
    [segmentControl setSegmentedControlStyle:UISegmentedControlStyleBar];
    [segmentControl setMomentary:YES];
    [segmentControl addTarget:self action:@selector(addOrEditPressed) forControlEvents:UIControlEventValueChanged];
    UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentControl];
    self.navigationItem.rightBarButtonItem = myBarButtonItem;
    [myBarButtonItem release];
4

5 に答える 5

1

segmentControlはリリースされる予定ですか?

于 2010-01-19T01:12:26.063 に答える
1

コードブロックに入り、コード内の別の場所(またはなど)でリリースされてsegmentControlいる限り、何も問題はありません。nildeallocviewDidUnload

静的アナライザー(Xcodeメニュー:ビルド|ビルドと分析)でコードを実行してみましたか?

機器は、リークを検索するときに誤検知を生成することがあります。リークされたメモリが時間の経過とともに蓄積されない場合、最悪のシナリオは、プログラムが合計80バイトをリークしていることです。時間の経過とともに増大するリークは、あなたが心配すべきことです。

于 2010-01-19T02:17:24.040 に答える
0

myArrayの保持カウントは、コードのこのセクションの後も1つです。これをinitWithItemsに追加してsegmentControlを作成すると、オブジェクトへの参照が含まれるようになります。

それはおそらくリークですか?

于 2010-01-19T01:13:15.060 に答える
0

アレイを作成するときに割り当ては必要ありません。

NSArray * myArray = [[NSArray alloc] initWithObjects:@ "Add"、@ "Edit"、nil];

使用する :

+ (id)arrayWithObjects:(id)firstObj, ...

この方法で試してください。これも必要ありませんrelease

于 2010-01-19T02:49:52.907 に答える
0

segmentControlはプロパティですか?viewDidUnloadでそれをゼロにしますか?

于 2010-01-19T02:58:45.413 に答える