Статьи

Разработка приложений для iPhone — MVC и основы программирования

В моей предыдущей статье мы узнали о некоторых основных концепциях разработки приложений для iOS. В этом уроке мы попытаемся понять шаблон дизайна iOS и некоторые основные понятия.

Шаблон дизайна

Приложения для iOS следуют шаблону проектирования MVC .

  • Модель: представляет бизнес-логику вашего приложения
  • Вид: представляет то, что пользователь видит в устройстве
  • Контроллер: действует как посредник между моделью и представлением. Между представлением и моделью не должно быть прямого разговора. Контроллер обновляет представление на основе любых изменений в базовой модели. Если пользователь вводит или обновляет какую-либо информацию в представлении, эти изменения отражаются в модели с помощью контроллера.

У нас не будет единого контроллера для управления всеми моделями и представлениями, поскольку это усложняет приложение. Таким образом, в приложении будет несколько MVC, которые будут взаимодействовать друг с другом и решать задачи приложения.

Как представление или модель взаимодействуют с контроллером?

Представления могут взаимодействовать с контроллером с помощью целей или делегатов .

Всякий раз, когда пользователь взаимодействует с представлением, например, касаясь кнопки, представление может установить связанный с ним контроллер в качестве цели действия пользователя. Таким образом, Контролер может принять решение о дальнейших действиях. Мы увидим, как этого можно добиться в следующей части этого урока.

Представления также могут делегировать некоторые действия контроллеру, установив контроллер в качестве его делегата.

Например, в случае текстового поля решение о том, что должно произойти, когда пользователь начинает вводить текстовое поле или когда пользователь закончил вводить текстовое поле, может быть оставлено контроллеру. Это может быть достигнуто путем установки контроллера в качестве делегата текстового поля.

Мы также можем заставить контроллеры прослушивать изменения в базовой модели. Модель может затем передать изменения всем прослушивающим контроллерам через уведомления .

Основы развития

Мы приведем в движение колеса, исследуя основные строительные блоки программирования iOS — файлы интерфейса и реализации.

Интерфейсный файл

Файл интерфейса или заголовка содержит объявления всех открытых переменных и методов экземпляра.

Образец:

#import <Foundation/Foundation.h> @interface Sample:NSObject //variable and method declaration goes here @property (nonatomic,strong) NSString *strName; -(void) printToConsole:(NSString *) strLog; @end 

Примечания к сведению:

  • Файл начинается с ключевого слова @interface за которым следует имя класса Sample .
  • NSObject обозначает суперкласс класса Sample . NSObject является базовым классом для всех классов Objective C.
  • Определенный класс и его суперкласс разделены двоеточием, обозначающим концепцию наследования. Помните, что в Objective C. нет множественного наследования
  • Оператор #import указывает библиотеки, которые должны быть включены. Фреймворк Foundation содержит классы и функции для разработки под iOS и OSX. NSObject , NSString , NSArray и NSDictionary являются частью структуры Foundation.
  • Когда мы определяем класс View или View Controller, мы импортируем инфраструктуру UIKIT, которая содержит классы и функции, необходимые для разработки под iOS. Эти классы будут подклассом UIView или UIViewController доступным в структуре UIKIT. У нас есть похожая платформа под названием Appkit Framework для разработки приложений на Mac.
  • @property объявляет методы получения и установки переменной strName . Реальные методы получения и установки не видны в коде, но все это происходит за сценой. Мы можем переопределить методы getter и setter, если это требуется в файле реализации.
  • nonatomic,strong обозначает атрибуты свойств, по которым генерируются методы getter и setter. Это влияет на способ управления памятью объекта. Мы увидим это подробно в моих будущих уроках.
  • - (void) printToConsole:(NSString *) strLog; обозначает объявление метода.
    1. - указывает, что это метод экземпляра. + будет обозначать статический метод.
    2. void — это тип возвращаемого значения.
    3. printToConsole — это имя функции.
    4. strLog является аргументом. Аргументы появляются обычно после двоеточия.
    5. Общий синтаксис:
      • (Return Type) methodName:(arg1 Type)arg1:(arg2 Type)arg2;
      • (Return type) methodName:(arg1 Type)arg1 methodName:(arg2 Type)arg2

Файл реализации

Образец:

 @interface Sample() //Private variables and methods declared here @end @implementation Sample @synthesize strName //Method Definitions - (void) printToConsole:(NSStsring *) strLog { NSLog(@”Understanding the basics is important”) NSLog(@”Logs ”+ strLog) } @end 

Примечания к сведению:

  • Все Private методы и переменные могут быть объявлены в разделе интерфейса в файле реализации.
  • Начинается с ключевого слова @implementation .
  • @synthesize представляет определения @synthesize установки переменной.
  • Методы, объявленные в файле .h , реализованы в файле .m . В нашем примере printToConsole метода printToConsole осуществляется в этом файле. Функция NSLog помогает в печати журналов на консоль. Строковые значения всегда начинаются с символа @ . NSLog может быть полезен для отладки вашего приложения.
  • Оба файла .h и .m должны заканчиваться ключевым словом @end .

Создать образец приложения

Теперь давайте создадим простое приложение, чтобы узнать, как происходит взаимодействие между представлением и его контроллером.

Итак, создайте приложение Single View, как я объяснил в моей предыдущей статье .

Нажмите на TTTViewcontroller.xib и выберите владельца файла, а затем выберите инспектора идентификации. Класс, упомянутый здесь, отвечает за все действия, которые происходят внутри этого Представления.

просмотр контроллера

Перетащите кнопку из библиотеки объектов и поместите ее в представление.

перетащить объект

TTViewController

Измените заголовок кнопки на Click me .

нажми на меня

Мы можем создать ссылку на эту кнопку в TTTViewController. В терминах iOS мы называем это выходом . Переменная IBOutlet в контроллере представляет некоторый элемент пользовательского интерфейса в Интерфейсном Разработчике.

Чтобы создать розетку, выберите Assistant Editor на панели инструментов. Поместите ваш TTTViewController.Xib с одной стороны и TTTViewController.h с другой стороны.

Теперь щелкните правой кнопкой мыши на кнопке и в раскрывающемся .h выберите « Новый источник ссылок» и перетащите его в файл .h как показано ниже.

помощник редактора

Дайте переменной имя во всплывающем окне и выберите «Подключиться».

имя и подключение

Теперь в вашем файле интерфейса будет автоматически сгенерирована переменная IBOutlet как показано ниже.

 #import <UIKit/UIKit.h> @interface TTTViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *btnClickMe; @end 

Мы также можем указать действие, которое должно быть вызвано нажатием кнопки.

Щелкните правой кнопкой мыши на кнопке, выберите кружок и перетащите соединение из события Touch Up Inside кнопки в файл контроллера, как показано ниже.

подправить внутри

Введите имя метода и выберите « Подключиться» .

подключения

Теперь ваш интерфейсный файл изменится, как показано ниже.

 @interface TTTViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *btnClickMe;- (IBAction)btnClickAction:(id)sender; @end 

Примечания к сведению:

  • IBAction означает, что этот метод будет вызываться для некоторых действий в представлении.
  • IBAction обозначает пустое возвращаемое значение.
  • Аргумент sender в методе обозначает ссылку на нажатую кнопку.
  • id — это общий тип данных для всех классов Objective C.
  • Пустое определение метода также будет автоматически сгенерировано в файле реализации.
  • Таким образом, представление взаимодействует с контроллером, устанавливая целевое действие, которое должно вызываться в контроллере, когда пользователь взаимодействует с представлением.

Мы определим метод в файле реализации, как указано ниже.

 - (IBAction)btnClickAction:(id)sender { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Hi" message:@"Button clicked!!!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } 

Обратите внимание, как создается представление оповещения. Выберите alt и нажмите на UIAlertview чтобы получить больше информации о просмотре предупреждений.

Запустите приложение в симуляторе.

имитатор

Вывод

К концу этой статьи вы должны понимать, как XCode значительно упростил программирование.

Мы рассмотрим некоторые более интересные концепции в моих будущих статьях.