EXC_BAD_ACCESS Проблема с заявлением о выпуске - PullRequest
1 голос
/ 16 мая 2011

Я не знаю, что не так с этим утверждением, потому что у меня точно такой же код, который я скопировал из другого моего проекта, но он просто выдает EXC_BAD_ACCESS, когда все выглядит хорошо.Кто-нибудь может определить проблему?Я очень благодарен за то, что я часами сталкивался с этой ошибкой, один и тот же код продолжает давать разные результаты, такие как плохой доступ или я получаю белый экран.

Фрагмент кода:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSLog(@"0");
UINavigationController * localNavigationController;

tabBarController = [[UITabBarController alloc] init];
NSMutableArray * localControllersArray = [[NSMutableArray alloc] initWithCapacity:4];

//ProductViewController
ProductViewController * productViewController;
productViewController = [[ProductViewController alloc] initWithTabBar];

localNavigationController = [[UINavigationController alloc] initWithRootViewController: productViewController];
[localControllersArray addObject:localNavigationController];
NSLog(@"1");
// memory statements
[localNavigationController release];
[productViewController release];


//Search View Controller
SearchViewController * searchViewController;
searchViewController = [[SearchViewController alloc] initWithTabBar];
localNavigationController = [[UINavigationController alloc] initWithRootViewController: searchViewController];
[localControllersArray addObject:localNavigationController];

// memory statements
[localControllersArray release];
[searchViewController release];
NSLog(@"2");
//Register View Controller
RegisterViewController * registerViewController;
registerViewController = [[RegisterViewController alloc] initWithTabBar];
localNavigationController  = [[UINavigationController alloc] initWithRootViewController:registerViewController];

[localControllersArray addObject:localNavigationController];
NSLog(@"3");
//memory management
[localControllersArray release];
[registerViewController release];

//About View Controller
AboutViewController * aboutViewController;
aboutViewController = [[AboutViewController alloc] initWithTabBar];
localNavigationController = [[UINavigationController alloc] initWithRootViewController: aboutViewController];
[localControllersArray addObject:localNavigationController];

//memory management
[localNavigationController release];
[aboutViewController release];
NSLog(@"4");
// Override point for customization after application launch.
tabBarController.viewControllers = localControllersArray;


[window addSubview:tabBarController.view];
// Override point for customization after application launch.
[self.window makeKeyAndVisible];
return YES;

NSLog должен был увидеть, где была проблема.3 не отображается после [релиз localNavigationController].

Я прикрепил проект.

http://www.mediafire.com/?eauye5s361cyej0

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Ошибка с:

[localControllersArray release];

сразу после вашего заявления NSLog(@"3");.

localControllersArray уже выпущен до оператора NSLog(@"2").

Решением является удаление [localControllersArray release]; перед оператором NSLog(@"2").

2 голосов
/ 16 мая 2011

Используйте статический анализатор

Действительно, используйте «Анализ» в меню продукта, и он определит проблему в течение секунды.

В

[localControllersArray addObject:localNavigationController];

вы используете массив, который вы выпустили несколько строк раньше.

Редактировать: И да, размещение кода вместо загрузки проекта - это путь. Думаю, у меня просто хороший день и я скачал.

...