Интернет магазин китайских планшетных компьютеров



Компьютеры - 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 позволяет очень просто расширять функциональность имеющихся классов. Он поддерживает так называемые категории, которые позволяют модифицировать существующие классы «на месте». С помощью категорий можно добавить требуемую функциональность, не внося в них изменений и даже вообще не имея доступа к исходному коду существующих классов. В других более распространёных языках это потребовало бы от программиста порождения нового класса, поддерживающего дополнительные функции, а затем кропотливую замену всех используемых объектов родительского класса на этот новый.



Просмотров: 6732


<<<