|
|
Компьютеры - Cocoa - Объекты с богатыми возможностями01 мая 2011
Оглавление: 1. Cocoa 2. История Cocoa 3. Управление памятью 4. Основные фреймворки 5. Модель-представление-поведение 6. Позднее связывание 7. Объекты с богатыми возможностями 8. Реализации
Одна из самых полезных вещей в Cocoa это мощные «базовые объекты», предоставляемые системой. В качестве примера, обратитесь к классам Foundation NSString и NSAttributedString , которые обеспечивают поддержку Unicode-строк, и систему NSText в AppKit, позволяющую программисту отображать строки в графическом интерфейсе.
NSText и относящиеся к нему классы используются для отображения и редактирования строк. Эти объекты позволяют реализовать в приложении всё, что угодно, начиная от простейшего однострочного поля для ввода текста и заканчивая системой вёрстки с поддержкой разбиения на страницы и несколько колонок, а также профессиональных типографских функций, таких как кернинг, лигатуры, обтекание текста вокруг любых форм, повороты текста, полная поддержка Unicode и сглаживания шрифтов. Свойства абзацев могут контролироваться как программно, так и пользователем, с помощью объекта «линейка», который может быть присоединён к любому представлению, отображающему текст. Проверка правописания также может производиться автоматически, с использованием единого словаря для всех приложений и «подчёркивания волнистой линией», впервые введённого Microsoft. Есть встроенная поддержка неограниченной отмены и возвращения внесённых изменений. Используя только встроенную функциональность, можно написать текстовый редактор в 13 строк кода. С новыми объектами-контролерами это количество строк можно свести к нулю. Это сильно контрастирует с TextEdit API, имевшемся в более ранних версиях Mac OS.
Objective-C позволяет очень просто расширять функциональность имеющихся классов. Он поддерживает так называемые категории, которые позволяют модифицировать существующие классы «на месте». С помощью категорий можно добавить требуемую функциональность, не внося в них изменений и даже вообще не имея доступа к исходному коду существующих классов. В других более распространёных языках это потребовало бы от программиста порождения нового класса, поддерживающего дополнительные функции, а затем кропотливую замену всех используемых объектов родительского класса на этот новый.
Просмотров: 6966
|