Вот ситуация. Я создал проект в xcode 4.2 с целевым значением развертывания, установленным как 5.0. но я хочу дать обратно совместимость с моим кодом до 4.0. Теперь у меня нет симуляторов для 4.2 или 4.0 в xcode 4.2, поэтому я запускаю свой код в xcode 4.0. Здесь я получил две ошибки:запуск проекта, созданного в xcode 4.2 (цель развертывания 5.0) в xcode 4.0 (цель развертывания 4.0)
1. unknown "strong". I removed it by adding retain instead.
2. unknown "@" in project, so I added below code in main.h
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
Это то, что мы обычно писали в main.h, прежде чем ARC или iOS5
Теперь другая проблема, с которой я столкнулся, что main.h получал званых, но AppDelegate не получал называемый то есть aplicationDidFinishLaunching никогда не вызывался. Затем я изменил код выше, чтобы что-то вроде этого
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass(AppDelegate.class));
[pool release];
return retVal;
Теперь у меня нет проблемы и сборка прошла успешно, и он компилируется в обеих версиях Xcode. Я просто хочу знать, почему это произошло, и для меня все в порядке, чтобы продолжить мой проект с указанным выше основным определением в xcode 4.2, потому что мне это не кажется хорошим.