О выпуске объектов, созданных мной - PullRequest
0 голосов
/ 25 января 2012

Я разрабатываю приложение для iPhone и iPad с Xcode 4.2 и последним SDK.

Я создал приложение с вкладками без ARC, и я нашел это на AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    UIViewController *viewController1, *viewController2;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
        viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
    } else {
        viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil] autorelease];
        viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil] autorelease];
    }
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

Могу ли я выпустить viewController1 и viewController2 ?

Ответы [ 3 ]

4 голосов
/ 25 января 2012

При отправке autorelease сообщение release будет отправлено позже.Так что не о чем беспокоиться, они будут освобождены.

3 голосов
/ 25 января 2012

Нет.Они будут отправлены автоматически, поэтому вы не должны их выпускать, если вы их кодируете.

0 голосов
/ 25 января 2012

Отправка autorelease просто добавьте их к текущему NSAutoreleasePool, который сливается в конце каждого цикла выполнения.Поэтому нет необходимости дополнительно освобождать их, используя release.

Совет: если это очень большой объект (или много объектов, например, созданных в цикле), который вы действительно хотите сразу же отпустить, чтобыосвободить его из памяти, вызвать вызов для немедленного эффекта и уменьшить объем памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...