steveJobs.currentHeight <= [Person maximumHeightInCentimeters]){
/* Высота этого персонажа находится в пределах допустимого */
} else {
/* Высота этого персонажа находится вне пределов допустимого */
}
self.window = [[UIWindow alloc]
initWithFrame: [[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
Соблюдение требований, предъявляемых другими классами, с помощью протоколов
В языке Objective-C существует концепция под названием
1. Откройте ваш проект в Xcode и в меню File (Файл) выберите New-File (Новый — Файл).
2. Убедитесь, что слева, в разделе iOS, вы выбрали категорию Cocoa Touch. После этого выберите элемент Objective-C Protocol (Протокол для Objective-C) и нажмите Next (Далее).
3. В разделе Class (Класс) введите имя Car, затем нажмите кнопку Next (Далее).
4. Далее система предложит вам сохранить ваш протокол на диске. Просто выберите для этого место (как правило, в каталоге с вашим проектом) и нажмите кнопку Create (Создать).
После этого Xcode создаст для вас файл Car.h с таким содержимым:
#import
@protocol Car
@end
Продолжим и определим свойства для протокола Car, как мы обсуждали ранее в этом разделе:
#import
@protocol Car
@property (nonatomic, copy) NSArray *wheels;
@property (nonatomic, strong) UIColor *bodyColor;
@property (nonatomic, copy) NSArray *doors;
@end
Теперь, когда наш протокол определен, создадим класс, обозначающий автомобиль, — например, Jaguar, — а потом обеспечим соответствие этого класса протоколу. Просто выполните все шаги, перечисленные в подразделе «Как создавать классы и правильно пользоваться ими» данного раздела, после чего обеспечьте его соответствие протоколу Car следующим образом:
#import
#import «Car.h»
@interface Jaguar: NSObject
@
end
Если вы попробуете собрать ваш проект на данном этапе, то компилятор выдаст вам несколько предупреждений, например такое:
Auto property synthesis will not synthesize property declared in a protocol
Это означает, что ваш класс Jaguar пытается соответствовать протоколу Car, но на самом деле не реализует всех требуемых свойств и/или методов, описанных в этом протоколе. Теперь вы уже знаете, что в протоколе могут содержаться необходимые и факультативные (опциональные) элементы, которые вы помечаете ключевыми словами @optional или @required. По умолчанию действует квалификатор @required, и поскольку мы явно не указываем квалификатор для этого протокола, компилятор неявно выбирает @required за нас. Следовательно, класс Jaguar теперь
#import
#import «Car.h»
@interface Jaguar: NSObject
@property (nonatomic, copy) NSArray *wheels;
@property (nonatomic, strong) UIColor *bodyColor;
@property (nonatomic, copy) NSArray *doors;
@end
Отлично. Теперь мы понимаем основы работы с протоколами, то, как они работают и как их определить. Далее в этой книге мы подробнее поговорим о протоколах, а на данный момент вы получили довольно полное представление о них.
Хранение элементов в коллекциях и получение элементов из коллекций