0

「LIExposeController」を使用して新しい UIViewController を作成しています。これにより、修正できないいくつかのメモリ警告が表示されます。

- (UIViewController *)newViewControllerForExposeController:(LIExposeController *)exposeController {
    UIViewController *viewcontroller = [[[MyViewController alloc] init] autorelease];

    return viewcontroller; // warning here saying object with a + 0 retain count returned to caller where a + 1 (owning) retain count is expected
}


- (void)shouldAddViewControllerForExposeController:(LIExposeController *)exposeController {
    [exposeController addNewViewController:[self newViewControllerForExposeController:exposeController]
                                  animated:YES];
} // warning here saying potential leak of an object



LIExposeController *exposeController = [[[LIExposeController alloc] init] autorelease];


    exposeController.viewControllers = [NSMutableArray arrayWithObjects:
                                        [self newViewControllerForExposeController:exposeController],
                                        nil]; // warning here saying potential leak of an object
4

1 に答える 1

0

で始まるメソッドnewは、autoreleased/retain count +0 オブジェクトではなく、retain count +1 のオブジェクトを生成することが期待されています。ARC と Static Analyzer はどちらも、規則としてこれらの規則に従います。これらの規則を満たすようにコードを修正するか、規則と衝突しないようにメソッドの名前を変更する必要があります。

于 2012-08-22T09:15:09.590 に答える