Spec-Zone .ru
спецификации, руководства, описания, API
Библиотека разработчика Mac Разработчик
Поиск

Добавление отслеживаемого объекта

В этом приложении существует два пользовательских класса, содержащие прикладную логику. Шаблон Xcode обеспечил AppDelegate класс и создаваемый экземпляр из него в файле пера для Вас. При создании соединений между элементами UI и делегатом приложения Вы добавили пользовательский код к AppDelegate класс. Делегат приложения действует как объект контроллера в шаблоне разработки Контроллера представления Модели путем обновления представлений и управления объектами модели, хранящими данные реального приложения. Теперь необходимо реализовать объект модели, хранящий объем дорожки. Необходимо реализовать a Track класс и создает экземпляр его в делегате приложения. Когда элемент UI изменяет значение, делегат приложения ответственен за обновление объема дорожки и синхронизацию представлений.

image: ../Art/TrackMixMVC.png

Создайте файлы заголовка и реализации для класса дорожки

Первая задача состоит в том, чтобы создать заголовок и файлы реализации для нового Track класс. Это наследуется от NSObject класс, корневой класс в Objective C.

bullet
Создать файлы для нового класса
  1. В XCode, в навигаторе проекта выбирают папку группы TrackMix.

    Когда Вы добавляете новые файлы на следующих шагах, они добавляются к навигатору проекта при этом выборе.

  2. Создайте класс Objective C следующим образом:

    • Выберите File> New> File.

    • В шаблонном диалоговом окне выберите Cocoa в разделе OS X.

    • Выберите шаблон класса Objective C и нажмите Далее.

    image: ../Art/28_createnewclass.png
  3. На экране, появляющемся, определяет имя класса для Отслеживания (условно, имена классов начинаются с прописной буквы). Оставьте новый класс как подкласс NSObject класс, и нажимает Далее.

    image: ../Art/29_createnewclass2.png
  4. В диалоговом окне Сохранения оставьте группу и цели, как они и нажимают Create.

Файлы должны теперь быть расположены в папке группы TrackMix Вашего проекта. При рассмотрении файлов Вы будете видеть, что тупиковый интерфейс класса и объявления реализации предоставлены для Вас. Необходимо добавить атрибут для представления объема.

Реализуйте класс дорожки

Атрибут объема дорожки реализован с помощью Objective C, объявил свойство. Заявленное свойство является удобным способом реализовать переменную экземпляра.

bullet
Добавить свойство объема
  • В заголовочном файле Дорожки (Track.h), добавьте объявление свойства для a float значение вызывают volume.

    Заголовочный файл должен быть похожим на это:

    #import <Foundation/Foundation.h>
     
    @interface Track : NSObject
    @property (assign) float volume;
    @end

При создании приложения компилятор читает объявление свойства и генерирует частную переменную экземпляра и методы доступа для volume свойство. Значение _volume переменная экземпляра автоматически установлена в 0 когда Track объект создается.

Добавьте свойство дорожки

Поскольку приложение делегирует для использования экземпляра Track— для хранения объема, выведенного на экран многократными элементами UI — Вы добавляете свойство дорожки к AppDelegate класс.

Компилятор генерирует ошибку, тем не менее, если Вы объявите свойство, не говоря его о Track класс. Вы могли импортировать заголовочный файл для Track класс (Track.h), но обычно Вы обеспечиваете использование предописания @class. Предописание является обещанием компилятору это Track будет определен где-то в другом месте и что это не должно напрасно тратить время, проверяя на него теперь. (Выполнение этого также избегает зацикливаний, если бы два класса должны относиться друг к другу и иначе включали бы заголовочные файлы друг друга.) Вы тогда импортируете сам заголовочный файл в файле реализации.

bullet
Добавить свойство дорожки к делегату приложения
  1. В заголовочном файле делегата приложения (AppDelegate.h), добавьте предописание для Track класс перед объявлением интерфейса для AppDelegate.

    @class Track;
  2. Добавьте объявление для track свойство между последним @property объявление и @end символ.

    @property (strong) Track *track;

    Свойство указывает strong атрибут, а не weak атрибут, указывая, что Track объект принадлежит делегату приложения. Пока делегат приложения ссылается на него, Track объект не уйдет. Объявления свойства выхода Вы создали более раннее использование weak припишите, потому что соответствующие элементы UI содержатся в иерархии представления, принадлежащей окну, не делегату приложения. Окно и его иерархия представления могут уйти независимые от делегата приложения.

Подтвердите что Ваш AppDelegate файл интерфейса класса (AppDelegate.h) похож на это. (Комментарии не показаны, и порядок свойства и объявлений метода не важен.):

#import <Cocoa/Cocoa.h>
 
@class Track;
 
@interface AppDelegate : NSObject <NSApplicationDelegate>
 
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTextField *textField;
@property (weak) IBOutlet NSSlider *slider;
@property (strong) Track *track;
 
- (IBAction)mute:(id)sender;
- (IBAction)takeFloatValueForVolumeFrom:(id)sender;
 
@end

Создайте экземпляр дорожки

Теперь, когда Вы добавили track свойство к AppDelegate класс, необходимо установить его значение в экземпляр Track.

bullet
Создать экземпляр класса Дорожки
  1. В файле реализации для делегата приложения (AppDelegate.m), импорт Track.h путем добавления этой строки кода перед @implementation оператор:

    #import "Track.h"

    Иначе, когда Вы сошлетесь, Вы будете видеть ошибку компиляции позже Track класс.

  2. Создайте экземпляр Track путем добавления следующего кода как первых двух операторов в реализации applicationDidFinishLaunching: метод:

    Track *aTrack = [[Track alloc] init];
    [self setTrack:aTrack];

Эти две строки кода делают следующее:

Objective C также поддерживает запись через точку. Можно заменить [self setTrack:aTrack]; с:

self.track = aTrack;

Запись через точку вызывает точно тот же метод доступа (setTrack:) как в исходной реализации. Запись через точку обеспечивает компактный синтаксис для вызова методов доступа — особенно при использовании вложенных выражений.

Протестируйте приложение

Можно теперь протестировать приложение.

bullet
Протестировать приложение
  • Скомпилируйте и работайте, проект (выберите Build> Build и Run, или щелкните по Кнопке запуска на панели инструментов XCode).

Ваше приложение должно скомпилировать без ошибок, и необходимо видеть тот же пользовательский интерфейс как прежде. Неутешительно, пользовательский интерфейс должен также вести себя, как он сделал прежде. Несмотря на то, что у Вас теперь есть a Track объект, делегат приложения ничего не делает с ним вне создания его. Существует немного больше работы, чтобы сделать для завершения реализации.

Резюме

Вы реализовали вызванный класс модели Track сохранить a volume атрибут выведен на экран многократными элементами UI. В делегате приложения Вы объявили свойство для a Track возразите и выполняемый несколько других задач по обслуживанию. Методы доступа для свойства автоматически синтезируются.