Управление памятью iOS, UIWindow addSubview: и контроллер вкладок - PullRequest
0 голосов
/ 30 июня 2011

При использовании следующего кода нужно ли что-либо делать, чтобы освободить вид контроллера вкладок?Работая над приложением, я проанализировал проект, и он сообщает, что на линии есть потенциальная ссылка, используя addSubview:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [window addSubview:[tabController view]];
    [window makeKeyAndVisible];
    return YES;
}

MyAppDelegate.h

@interface MyAppDelegate : AppDelegate {
    UIWindow *window;
    IBOutlet UITabBarController *tabController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabController;

@end

MyAppDelegate.m

@implementation MyAppDelegate

@synthesize tabController, window;

- (void)dealloc {
    [tabController release];
    [window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [window addSubview:[tabController view]];
    [window makeKeyAndVisible];
    return YES;
}

@end

Нужно ли мне выпускать tabController.view перед тем, как отпустить tabController?Или внутри application:didFinishLaunchingWithOptions: метода? Этот вопрос , кажется, говорит о том, что мне просто нужно освободить контроллер в dealloc.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

Технически, вы должны выпустить tabController в какой-то момент, но на самом деле это не имеет значения. window существует на протяжении всей жизни программы, и когда программа завершается, вся память очищается, поэтому не будет утечек для объектов, сохраненных window.

Это вызовет предупреждение при запуске Build / Build and Analyze, но его можно смело игнорировать. То же самое относится к navController, добавленному на этом уровне, или к любому другому сохраненному подпредставлению главного окна.

0 голосов
/ 30 июня 2011

у вас есть стилизация, так что назовите это "я"

   - (void)dealloc {

      [self.tabController release];

      self.tabController=nil;

      [self.window release];

      self.window = nil;


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