19 февр. 2014 г.

Концепт OS XI в стиле iOS 7

Как будет выглядеть дизайн OS X, если руку приложит Джонни Айв?

Один из концептов дизайна OS X 11.
 
Мы видели кучу "
концептов OS X аля iOS" для Mac в течение последних нескольких лет. Большинство из которых были довольно хороши, но этот недавний дизайн для меня является первым, который я был бы не против, использовать, если бы OS X 11 выглядела именно так.

Создано Эндрю Амбросино, концепция OS X 11 в полупрозрачных и плоских тонах, минимализм присутствует во всем. Мне впервые (с выходом iOS7) очень нравится прозрачная панель меню с возможностью ее расширения, хотя я последнее время не поклонник кучи прозрачностей и минимализма. В OS X иконки приложения, сделаны округлеными квадратами, что очень хорошо смотрится и сливается с дизайном.

Взгляните на это чудо, на эту невероятную концепцию, на самый лучший минимализм OS X:
 Как выглядит Mail.app при дизайне iOS7:


Светло-белый интерфейс почтового приложение относительно нынешнего серого выглядет просто отлично. Приложенияполучили больше прозрачности.
Интерфейс OS X Маверикс еще дружествен к пользователям, окно входа в систему появляется сразу как только Ваш Мак выйде из режима сна, в отличии от iOS не покажет вам экран для ввода вашего PIN, пока не начнешь взаимодействовать с устройством. Похоже, концепция  Эндрю с красивым минимализмом экрана входа со временем и датой работает по тому же принципу, прежде чем вы залогинитесь в систему.

18 февр. 2014 г.

Метод KeyDown - определение нажатых клавиш

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


- (void)keyDown:(NSEvent *)theEvent
{
    NSString *chars = theEvent.charactersIgnoringModifiers;
    unichar aChar = [chars characterAtIndex: 0];
    
    // F5
    if (aChar == 63240)
    {
        // что-то делаем
    }
    
    // F6
    if (aChar == 63241)
    {
        // что-то делаем
    }
    
        // что-то делаем другое
}

Хакинтош - Mac OS на PC

Многим знакома ситуация, когда Вы от друзей, из Интернет или откуда-то ещё узнали о чудесном компьютере от Apple, но не можете решиться его приобрести. Бывает, что у вас нет приятеля, готового дать Вам попользоваться своим Mac, чтобы Вы решили для себя, нужно оно Вам или нет. Тогда ключевой причиной нерешительности является страх потратить немаленькие деньги на продукт, который впоследствии может вам и не понравиться.
Над ключевыми шагами к возможности установки Mac OS X на сторонних системах работала масса людей, все из сообщества OSx86. Нам не известны их имена, но их псевдонимам выразят благодарность многие, у кого хакинтош был промежуточным этапом до настоящего Mac. Так, Maxxuss, SemjaZa и JaS были первыми, кто смог заставить EFI — более продвинутую замену BIOS, на которой построена OS X — работать на архитектуре x86. Позже энтузиастам Mifki, Semthex и Rufus удалось перенести на x86 и ядро XNU. Но настоящая эра хакинтоша для человека началась с выходом установочных DVD от JaS и tubgirl, которые позволяли без боли в зубах установить Mac OS X 10.4.8 на множество компьютеров на процессорах Intel или AMD.
Сразу попробуйте найти модель материнской платы и процессора, которые вы собираетесь использовать. Или наоборот, подберите самый оптимальный вариант из того, что у вас имеется на руках. Если вашего процессора нет в списке, то велика вероятность, что ничего не получится. Если же вы нашли его среди указанных, то определитесь с материнской платой, ориентируясь на комментарии в графе Fully Working w/o Patch, и прочитайте инструкции в графе Notes таблицы плат. Напротив каждой платы будет перечислено, что именно работает или не работает в Mac OS X на такой плате, а также указан оптимальный способ установки, включая необходимые дистрибутивы. От вас требуется просто скачать указанный дистрибутив и прожечь его на диск.
Обычно, после установки и успешной загрузки Mac OS X на PC возникают новые проблемы, с которыми приходиться считаться. По версии MacSpoon, три типичных проблемы свежей установки хакинтоша — это неработающая видеокарточка, неработающая сетевая карточка и неработающий USB. Но правильно подобранное железо и наличие драйверов под него в корне меняют ситуацию. Так что дерзайте. Ставьте OS X. Потом Xcode, и погнали программировать, ведь это очень интересно. Удачи.

NSCache контейнер - кэш

Объект NSCache является контейнером или кэшем, который хранит пары “ключ-значение”, аналогично классу NSDictionary. Разработчики часто используют кэши для временного хранения объектов, создание которых является дорогостоящим. Повторное использование этих объектов может обеспечить повышение производительности, потому что их значения не должны быть пересчитаны. Однако, эти объекты не являются критическими для приложения и могут быть удалены, если память ограничена. Если такие объекты удалить, их значения нужно вычислить заново, когда это необходимо.
Пока пара ключ-значение в кэше, кэш поддерживает сильную ссылку на него. Общие типы данных, хранящиеся в объектах NSCache — это объекты, которые реализуют протокол NSDiscardableContent. Хранение объектов этого типа в кэше имеет преимущества, поскольку их содержимое может быть удалено, если они больше не нужны, что приводит к экономии памяти. По умолчанию объекты, реализующие NSDiscardableContent, автоматически удаляются из кэша, если их содержимое удаляется, хотя эта политика автоматического удаления могут быть изменена.
Объекты NSCache имеют несколько отличий от других изменяемых коллекций. Класс NSCache включает в себя различные политики автоматического удаления, обеспечивающие использование не слишком большого количества памяти системы. Система автоматически осуществляет эти политики, если память необходима другим приложениям. При вызове эти политики удаляют некоторые элементы из кэша, сводя к минимуму использование памяти. Вы можете добавлять, удалять и запрашивать элементы из кэша из разных потоков без необходимости блокировки кэша. В отличие от объекта NSMutableDictionary, кэш не копирует ключевые объекты, добавленные в него.
Методы класса
Изменение имени кэша

Название
Описание
- name
Возвращает имя кэша.
- setName:
Устанавливает имя кэша из заданной строки.

Получение кэшированных значений


Название
Описание
- objectForKey:
Возвращает значение, связанное с указанным ключом.

Добавление и удаление кэшированных значений



Название
Описание
- setObject:forKey:
Устанавливает значение указанного ключа в кэше.
- setObject:forKey:cost:
Устанавливает значение указанного ключа в кэше и связывает пару ключ-значение с указанной стоимостью.
- removeObjectForKey:
Удаляет значение из кэша по указанному ключу.
- removeAllObjects
Очищает кэш, удалив все объекты.
Управление размером кэша


Название
Описание
- countLimit
Возвращает максимальное количество объектов, которые в настоящее время может содержать кэш.
- setCountLimit:
Задаёт максимальное число объектов, которое кэш может содержать.
- totalCostLimit
Возвращает максимальную общую стоимость, которую может иметь кэш до начала вытеснения объектов.
- setTotalCostLimit:
Задаёт максимальную общую стоимость, которую может иметь кэш до начала вытеснения объектов.

Управление удаляемым содержимым


Название
Описание
- evictsObjectsWithDiscardedContent
Возвращает логическое значение, указывающее, будет ли кэш автоматически вытеснять объекты, содержимое которых было удалено.
- setEvictsObjectsWithDiscardedContent:
Устанавливает логическое значение, указывающее, будет ли кэш автоматически вытеснять объекты, содержимое которых было удалено.

Управление делегатом

Название
Описание
- delegate
Возвращает делегат кэша.
- setDelegate:
Устанавливает заданный объект делегатом кэша.

17 февр. 2014 г.

NSArchiver кодирование объектов

Класс NSArchiver, конкретный подкласс NSCoder, предоставляет способ для кодирования объектов в архитектурно независимый формат, который может храниться в файле. Объект класса NSArchiver сохраняет архивные данные в изменяемый объект данных, объект класса NSMutableData. После кодирования объектов, объект NSArchiver может записать этот изменяемый объект данных непосредственно в файл, или можно использовать эти данные по-другому. Класс NSUnarchiver служит для декодирования объектов из объектов, хранящих данные. В Mac OS X v10.2 и более поздних версиях, NSArchiver и NSUnarchiver были заменены NSKeyedArchiver и NSKeyedUnarchiver.

Методы класса:

Инициализация NSArchiver


Название
Описание
- initForWritingWithMutableData:
Возвращает архиватор, инициализированный для кодирования потока и сведений о версии в указанный объект изменяемых данных.

Архивирование данных

Название
Описание
+ archivedDataWithRootObject:
Возвращает объект данных, содержащий закодированную форму графа объектов для заданного корневого объекта.
+ archiveRootObject:toFile:
Создает временный экземпляр NSArchiver и архивирует граф объектов при помощи кодирования в объект данных и записи результирующего объекта данных в указанный файл.
- encodeRootObject:
Архивирует заданный объект, а также все объекты, к которым он подключен.
- encodeConditionalObject:
Условно архивирует заданный объект.

Получение архивных данных


Название
Описание
- archiverData
Возвращает архивные данные текущего объекта.

Замена классов или объектов


Название
Описание
-classNameEncodedForTrueClassName:
Возвращает имя класса, используемого для архивирования экземпляров класса с правильным заданным именем.
- encodeClassName:intoClassName:
Кодирует заменяющее имя для класса с заданным правильным именем.
- replaceObject:withObject:
Позволяет текущему архиверу закодировать заданный объект так, как будто бы он является другим заданным объектом.

16 февр. 2014 г.

NSAffineTransform аффинные преобразования


Класс NSAffineTransform предоставляет методы для создания, объединения и применения аффинных преобразований. Преобразование определяет, как точки в одной системе координат трансформируются в точки в другой системе координат. Аффинное преобразование — особый тип преобразования, которое сохраняет параллельные линии в трансформируемом контуре, но не обязательно сохраняет длины или углы. Масштабирование, вращение и перенос являются наиболее часто используемыми действиями, поддерживаемыми аффинными преобразованиями, но также возможен и сдвиг объектов.
Методы класса:

Создание объекта NSAffineTransform
Название
Описание
+ transform
Создает и возвращает новый объект NSAffineTransform инициализированный единичной матрицей.
- initWithTransform:
Инициализирует матрицу текущего объекта с помощью другого объекта transform и возвращает текущий объект.

Накопительные преобразования

Название
Описание
- rotateByDegrees:
Применяет коэффициент поворота (измеряется в градусах) к матрице преобразования текущего объекта.
- rotateByRadians:
Применяет коэффициент поворота (измеряется в радианах), к матрице преобразования текущего объекта.
- scaleBy:
Применяет указанный коэффициент масштабирования для осей x и y к матрице преобразования текущего объекта.
- scaleXBy:yBy:
Применяет коэффициенты масштабирования для каждой оси матрицы преобразования текущего объекта.
- translateXBy:yBy:
Применяет указанный коэффициент переноса к матрице преобразования текущего объекта.
- appendTransform:
Добавляет заданную матрицу к матрице текущего объекта.
- prependTransform:
Добавляет заданную матрицу к матрице текущего объекта.
- invert
Инвертирует матрицу текущего объекта.

Преобразование данных и объектов

Название
Описание
- transformPoint:
Применяет преобразование текущего объекта к указанному объекту NSPoint и возвращает результаты.
- transformSize:
Применяет преобразование текущего объекта к указанному объекту NSSize и возвращает результаты.

Доступ к структуре трансформации


Название
Описание
- transformStruct
Возвращает матричные коэффициенты, хранящиеся в матрице текущего объекта.
- setTransformStruct:
Заменяет значения коэффициентов матрицы преобразования текущего объекта указанными значениями.