Я получил EXC_BAD_ACCESS
в main()
, вот мой код:
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, @"TestBedAppDelegate");
[pool release];
return retVal;
}
@interface TestBedAppDelegate : NSObject <UIApplicationDelegate>
@end
@implementation TestBedAppDelegate
- (void)applicationDidFinishLaunching:(UIApplication *)application {
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[TestBedViewController alloc] init]];
[window addSubview:nav.view];
[window makeKeyAndVisible];
}
@end
- (void) action: (id) sender
{
[self highRetainCount];
}
@implementation TestBedViewController
- (void) highRetainCount
{
UIView *view = [[[UIView alloc] init] autorelease];
printf("Count: %d\n", [view retainCount]);
NSArray *array1 = [NSArray arrayWithObject:view];
printf("Count: %d\n", [view retainCount]);
[array1 autorelease]; // If comment this line, everything will be OK
}
@end
Программа остановилась на main()
:
int retVal = UIApplicationMain(argc, argv, nil, @"TestBedAppDelegate");
Как говорится в комментарии,после комментирования [array1 autorelease];
все было в порядке.
Вот мой вопрос:
EXC_BAD_ACCESS
часто указывает на использование уже освобожденного объекта.Ясно, что есть что-то связанное с [array1 autorelease];
, но я не могу понять их отношения.
Почему остановился на этой позиции - main()
- а не где-то еще?
Вопрос новичка:)