Создайте свое первое приложение для iPhone
Теперь давайте создадим простое view-приложение (пустое приложение), которое запускается в iOS Simulator.
Шаги следующие:
1. Откройте Xcode и выберите Create a new Xcode project.

2. Затем выберите Single View Application.

3. Далее введите Product Name (название приложения), Organization Name и Company Identifier.

4. Убедитесь, что выбрано Automatic Reference Counting, чтобы автоматически освобождать ресурсы, выходящие из области видимости. Нажмите Next.
5. Выберите каталог проекта и нажмите Create.

6. Вы увидите страницу, как показано ниже.

В верхней части экрана можно настроить ориентацию, сборку и выпуск. Есть цель развертывания; устройство поддерживает цель развертывания версии 4.3 и выше. Они не обязательны. Пока просто сосредоточьтесь на запуске приложения.
7. Выберите iPhone Simulator из раскрывающегося меню и запустите.

8. Если первое приложение запустится успешно, вы получите вывод, как показано ниже.

Измените цвет фона, чтобы начать работу с Interface Builder. Выберите ViewController.xib. Выберите параметр Background справа, измените цвет и запустите.

В приведённом выше проекте по умолчанию целевая версия развёртывания установлена на iOS 6.0, а Auto Layout включён.
Чтобы приложение правильно работало на устройствах с iOS 4.3, мы уже изменили целевую версию развёртывания при создании приложения, но не отключили Auto Layout. Чтобы отключить Auto Layout, нужно снять флажок Auto Layout в File Inspector для каждого nib, то есть xib-файла.
Различные части IDE проекта Xcode показаны ниже (Руководство пользователя Apple Xcode 4).

В панели Inspector Selector, показанной выше, можно найти File Inspector и снять флажок Auto Layout. Auto Layout можно использовать, когда в качестве целевой версии развёртывания выбраны только устройства с iOS 6.0.
Конечно, вы также можете использовать новые функции, такие как Passbook, при ориентации на iOS 6. Пока что используйте iOS 4.3 в качестве целевой версии развёртывания.
Глубокое погружение в код вашего первого iOS-приложения
Приложение генерируется из 5 различных файлов, как показано ниже.- AppDelegate.h
- AppDelegate.m
- ViewController.h
- ViewController.m
- ViewController.xib
Мы используем однострочные комментарии (//) для пояснения простого кода. Важный код проекта поясняется ниже кода.
AppDelegate.h
// Header File that provides all UI related items. #import <UIKit/UIKit.h> // Forward declaration (Used when class will be defined /imported in future) @class ViewController; // Interface for Appdelegate @interface AppDelegate : UIResponder <UIApplicationDelegate> // Property window @property (strong, nonatomic) UIWindow *window; // Property Viewcontroller @property (strong, nonatomic) ViewController *viewController; //this marks end of interface @end
Объяснение кода
- AppDelegate вызывает UIResponder для обработки событий iOS.
- Реализует команды UIApplication, предоставляя ключевые события приложения, такие как завершение запуска, завершение работы и т. д.
- На экране устройства iOS объекты UIWindow используются для управления и координации различных представлений. Он подобен базовому представлению для других загруженных представлений. Обычно приложение имеет только одно окно.
- UIViewController управляет потоком экранов.
AppDelegate.m
// Imports the class Appdelegate's interface
import "AppDelegate.h"
// Imports the viewcontroller to be loaded
#import "ViewController.h"
// Class definition starts here
@implementation AppDelegate
// Following method intimates us the application launched successfully
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc]
initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
/* Sent when the application is about to move from active to inactive state.
This can occur for certain types of temporary interruptions
(such as an incoming phone call or SMS message)
or when the user quits the application and it begins the transition to the
background state. Use this method to pause ongoing tasks, disable timers,
and throttle down OpenGL ES frame rates. Games should use this method
to pause the game.*/
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
/* Use this method to release shared resources, save user data, invalidate
timers, and store enough application state information to restore your
application to its current state in case it is terminated later. If your
application supports background execution, this method is called instead
of applicationWillTerminate: when the user quits.*/
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
/* Called as part of the transition from the background to the inactive state;
here you can undo many of the changes made on entering the background.*/
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
/* Restart any tasks that were paused (or not yet started) while the
application was inactive. If the application was previously in the background,
optionally refresh the user interface.*/
}
- (void)applicationWillTerminate:(UIApplication *)application
{
/* Called when the application is about to terminate. Save data if appropriate.
See also applicationDidEnterBackground:. */
}
@end
Объяснение кода
- Здесь определяется UIApplication. Все методы, определённые выше, вызываются UI приложения и не содержат пользовательских методов.
- Выделяется объект UIWindow для хранения выделенных объектов приложения.
- UIController служит начальным контроллером представления окна.
- Вызов makeKeyAndVisible делает окно видимым.
ViewController.h
#import // Interface for class ViewController @interface ViewController : UIViewController @end
Объяснение кода
- Класс ViewController наследуется от UIViewController, предоставляя базовую модель управления представлениями для приложений iOS.
ViewController.m
#import "ViewController.h"
// Category, an extension of ViewController class
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Объяснение кода
- Здесь реализуются два метода, определённых в базовом классе UIViewController.
- После загрузки начального представления вызывается viewDidLoad для выполнения настройки.
- В случае предупреждения о нехватке памяти вызывается didReceviveMemoryWarning.