Я возвращался к своему приложению, пытаясь решить все проблемы с памятью и читая об управлении памятью.
Я начал использовать [object retainCount] для отслеживания распределения моей памяти.
Нужно ли доверять, потому что я нахожу счета действительно странными?
Может ли кто-нибудь объяснить следующее:
Имейте в виду, что делегат приложения и пустой mainViewController не имеют значения.
InitWithRootViewController вызывает увеличение счетчика, но я не вижу другого способа добавить один ....
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/* Create the View Controllers */
UIViewController *mainViewControl = [[[MainViewController alloc] init] autorelease];
/* Create the Navigation Controller */
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:mainViewControl] autorelease];
NSLog(@"retain count: %i",[mainViewControl retainCount]);
/* Set the toolbar to purple */
navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
navigationController.navigationBar.tintColor = [UIColor colorWithRed:.6 green:.1 blue:.4 alpha:0.4];
navigationController.navigationBar.translucent = YES;
NSLog(@"retain count: %i",[mainViewControl retainCount]);
navigationController.toolbar.barStyle = UIBarStyleBlackTranslucent;
navigationController.toolbar.tintColor = [UIColor colorWithRed:.6 green:.1 blue:.4 alpha:0.4];
navigationController.toolbar.translucent = YES;
[navigationController setNavigationBarHidden:YES animated:NO];
[navigationController setToolbarHidden:YES animated:NO];
NSLog(@"retain count: %i",[mainViewControl retainCount]);
[window addSubview:[navigationController view]];
NSLog(@"retain count: %i",[mainViewControl retainCount]);
А это журнал ~
2011-01-17 19:47:21.278 ANA[5653:207] 3<br>
2011-01-17 19:47:21.282 ANA[5653:207] 4<br>
2011-01-17 19:47:21.286 ANA[5653:207] 7<br>
2011-01-17 19:47:21.287 ANA[5653:207] 12<br>
2011-01-17 19:47:21.301 ANA[5653:207] Load View
Я не понимаю, почему изменение этих свойств или ссылки на navigController приводит к увеличению количества сохраняемых данных.
Я сделал это без авто-выпусков и тоже выпустил вручную, но результат тот же.
По сути, я не понимаю, и задаюсь вопросом, является ли команда retainCount надежной, потому что, если я не могу понять это, я не думаю, что смогу отладить какие-либо проблемы с памятью в другом месте ...