Index: src/OFApplication.m ================================================================== --- src/OFApplication.m +++ src/OFApplication.m @@ -74,16 +74,27 @@ #undef SIGNAL_HANDLER int of_application_main(int *argc, char **argv[], Class cls) { - OFApplication *app = [OFApplication sharedApplication]; - id delegate = [[cls alloc] init]; + id delegate; #ifdef _WIN32 wchar_t **wargv, **wenvp; int wargc, si = 0; #endif + + if ([cls isSubclassOfClass: [OFApplication class]]) { + fprintf(stderr, "FATAL ERROR:\n Class %s is a subclass of " + "class OFApplication, but class\n %s was specified as " + "application delegate!\n Most likely, you wanted to " + "subclass OFObject instead or specified\n the wrong class " + "with OF_APPLICATION_DELEGATE().\n", + class_getName(cls), class_getName(cls)); + exit(1); + } + + app = [[OFApplication alloc] init]; [app OF_setArgumentCount: argc andArgumentValues: argv]; #ifdef _WIN32 @@ -90,10 +101,11 @@ __wgetmainargs(&wargc, &wargv, &wenvp, _CRT_glob, &si); [app OF_setArgumentCount: wargc andWideArgumentValues: wargv]; #endif + delegate = [[cls alloc] init]; [app setDelegate: delegate]; [app run]; return 0; @@ -100,13 +112,10 @@ } @implementation OFApplication + (OFApplication*)sharedApplication { - if (app == nil) - app = [[self alloc] init]; - return app; } + (OFString*)programName {