Xcode без раскадровки и ARC
Я загрузил новый xcode-5 и только начал его использовать.
Мы можем создавать приложения напрямую, включая раскадровку и ARC, и не запрашивать такую опцию, как более ранние версии.
Итак, мой вопрос в том, как мы можем использовать xcode5 без ARC и раскадровки. мы должны вручную удалить файл раскадровки? или есть другой вариант.
Ответы
Ответ 1
Создайте проект с пустым приложением и добавьте любой диспетчер представлений (я добавил здесь TestViewController)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
TestViewController *test = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:test];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
return YES;
}
ШАГИ ДЛЯ УДАЛЕНИЯ ARC
1) В настройке сборки установите Автоматический подсчет ссылок на НЕТ.
///////////////////////////////////////////////////////////////////////////КОНЕЦ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Если у вас уже создано приложение с раскадрой и ARC, то
ШАГИ ДЛЯ УДАЛЕНИЯ СЕТИ СТОРИИ
1) Удалите файл Main.storyboard из вашего проекта.
2) Добавьте новые файлы с xib для своего контроллера, если они не добавлены в скомпилированные источники в фазах сборки, а затем добавьте их вручную.
3) Удалите базовое имя основной раскадровки из plist.
4) Измените файл appdelegate didFinishLaunchingWithOptions и добавьте:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;
[self.window makeKeyAndVisible];
, как:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;
// Override point for customization after application launch.
TestViewController *test = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:test];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
return YES;
}
Теперь, в приведенном выше примере вам нужно управлять памятью вручную, например,
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[test release];
ШАГИ ДЛЯ УДАЛЕНИЯ ARC
1) В настройке сборки установите Автоматический подсчет ссылок на НЕТ.
Ответ 2
Вместо удаления файла раскадровки вы можете создать новый проект с пустым шаблоном приложения. Чтобы вы могли избежать создания файла раскадровки.
Используйте следующие шаги для исключения раскадровки:
![enter image description here]()
- Создайте новый проект с пустым шаблоном приложения.
- Добавить новый viewController (Пример:
LoginViewController
)
- Измените файл
didFinishLaunchingWithOptions
в AppDelegate.m
, как указано ниже.
Изменить на:
#import "LoginViewController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:loginVC];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
Удалить ARC:
Перейти к настройке сборки → Objective-C Автоматический подсчет ссылок → НЕТ
Ответ 3
создать новый проект
! [Создать новый проект]
![remove Main storyboard file base name in Info]()
//удалить базовое имя основного раскадровки в Info
Добавить этот код в appdelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:loginVC];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
Затем автоматически удалите свою раскадровку.
Пожалуйста, попробуйте это...
успешно выполнено. спасибо
Ответ 4
ShortCut: я Prefer
Создайте проект без Storyboard и ARC в xcode4, а затем откройте этот проект в xcode5.
Ответ 5
Xcode 4 установил флажок "Использовать раскадровки" при создании нового проекта. Можно захватить старые шаблоны приложений Xcode 4 (файлы XML) и преобразовать их в Xcode 5. Таким образом, вы получаете старые шаблоны, которые позволяют вам выбирать, хотите ли вы раскадровки или нет.
Я написал script, который делает все, что сработает для вас: https://github.com/jfahrenkrug/Xcode4templates
После запуска script на экране "Новый проект" появится раздел "Xcode 4":
![enter image description here]()
А потом - Увы! - ты вернешь свой любимый выбор:
![enter image description here]()
Для использования этого script вам понадобится копия пакета Xappode 4.app из http://developer.apple.com/ios.
Ответ 6
У меня есть подсказка:
- Первый: я создаю свой проект с помощью XCode 4.6 (потому что эта версия ближе всего к XCode 5).
- Конечно, с XCode 4.6 вы можете использовать или не использовать ARC, Storyboard.
- Второе: после этого я открою свой проект с помощью XCode 5.
= > Я думаю, что Xcode 5 поймет, что проект использует nonARC и, конечно же, не имеет раскадровки.
Я надеюсь, что ваш проект будет работать!: D