1

次のコードを使用して(ARCを使用して)UIActivityViewControllerを提示しています。

- (IBAction)share:(id)sender {
UIActivityViewController *activityController = [[UIActivityViewController alloc]
                                                initWithActivityItems:[NSArray arrayWithObjects:@"Cat",@"Dog" , nil]
                                                applicationActivities:nil];

[self presentViewController:activityController  animated:YES completion:nil];}

機器「リーク」を使用してiPhoneシミュレータでプログラムを実行します。ビューを表示して[キャンセル]をクリックした後:次の行でリークが発生します(100%):

    [self presentViewController:activityController  animated:YES completion:nil];

私は何が間違っているのですか?

4

1 に答える 1

0

allocによって自動的にバランス調整されARCます。しかし、 を self に渡すと、参照カウントが増加し、オブジェクトが存在する場合activityControllerはオブジェクトが に入れられます。autorelease poolしたがって、コードが を持たないスレッドで実行されるとautorelease pool、このオブジェクトはリークします。

于 2013-01-22T08:11:17.733 に答える