28 февр. 2014 г.

Mountain Range Wallpaper (original)

Mountain Range обои с разным разрешением под некоторые устройства.

1280x1024
Dual Monitors (3360x1050)
Android (2160x1920)
HD+ (1600x900)
FHD (1920x1080)
WUXGA (1920x1200)
iMac 27" (2560x1440)
Macbook Retina 13" (2560x1600)
Macbook Retina 15" (2880x1800)
QHD+ (3200x1800)

27 февр. 2014 г.

25 февр. 2014 г.

Objective-C протоколы. Часть 1

Протоколы описывают методы, которые могут быть реализованы каким-либо классом. Цели для которых используются протоколы: 

- Ожидание, что класс поддерживающий протокол выполнит описанные в протоколе функции;
- Поддержка протокола на уровне объекта, не раскрывая методы и реализацию самого класса;
- В виду отсутствия множественного наследования - объединить общие черты нескольких классов.

Формальные протоколы

Объявление формального протокола гарантирует, что все методы объявленные протоколом будут реализованы классом. Простейшее описание протокола:

@protocol ProtocolName
     method declarations 
@end

За словом @protocol следует перечисление методов, также как и в обычном объявлении методов класса. Протокол может быть унаследован от произвольного количества других протоколов:

@protocol MyProtocol <Protocol1, Protocol2, Serializable, Drawable>

Добавление поддержки протокола к классу

Чтобы указать классу о поддержке определенного протокола необходимо включить заголовочный файл протокола в файл описания класса, и после в <скобках, через запятую>перечислить протоколы:

#import "protocolName.h"
 
@interface MyClass : SuperClass <protocolName>
     описание класса
@end
 
В файле реализации класса необходимо реализовать все методы которые описывает протокол! Но - в Objective-C 2.0 добавлены еще два новых модификатора @optional и @required:
 
@protocol asdfg
     - (void) readMy;
@optional
     - (void) saveReadMy;
     - (NSString*) loadReadMy;
@required
     - (NSInteger) countReadMy;
@end

Данный протокол показывает, что протокол asdfg дожен реализовать методы readMy и countReadMy, а методы saveReadMy и loadReadMy необязательны к реализации.
 
Более подробно о протоколах и их применению будет в следующей статье. Одно из применений протоколов можно посмотреть на примере табличных представлений NSTableView.

23 февр. 2014 г.

NSDistantObjectRequest - обработка вызовов между процессами

Объекты класса NSDistantObjectRequest используются системой распределенных объектов для обработки вызовов между различными процессами. Эти объекты никогда не следует создавать напрямую. Если вы хотите получить доступ к низкоуровневым деталям распределенных объектов, никогда не следует использовать для этого NSDistantObjectRequest. Для перехвата и обработки запросов вручную следует реализовать делегатный метод handleRequest класса NSConnection.

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

Получение информации о запросе

НазваниеОписание
- connectionВозвращает объект NSConnection, участвующий в запросе.
- conversationВозвращает объект-токен, представляющий разговор, в котором был создан текущий объект.
- invocationВозвращает объект NSInvocation для запроса.

Выбрасывание удалённого исключения


НазваниеОписание
- replyWithException:Отправляет ответ обратно на удаленный объект, создавая запрос к удалённому объекту.

NSDistantObject

21 февр. 2014 г.

NSDistantObject - прокси для объектов

Класс NSDistantObject является конкретным подклассом класса NSProxy, который определяет прокси для объектов в других приложениях или потоках. Когда удалённый объект получает сообщение, в большинстве случаев сообщение перенаправляется через объект NSConnection к реальному объекту в другом приложении. При этом возвращаемое значение доставляется отправителю сообщения, или он получает исключение от вызываемого метода. NSDistantObject определяет методы для создания экземпляров класса NSConnection, но они предназначены только для для переопределения в подклассах — вы никогда не должны вызывать их напрямую.
Методы класса

Создание локального прокси

Название
Описание
+ proxyWithLocal:connection:
Возвращает локальный прокси для заданного объекта и связи, создавая прокси при необходимости.
- initWithLocal:connection:
Инициализирует объект NSDistantObject как локальный прокси для заданного объекта.

Создание удаленного прокси

Название
Описание
+ proxyWithTarget:connection:
Возвращает удаленный прокси для заданного объекта и связи, создавая прокси при необходимости.
- initWithTarget:connection:
Инициализирует вновь созданные NSDistantObject как удаленный прокси для удалённого объекта, который является идентификатором в другом потоке или другом приложении.

Получение объекта NSConnection для прокси

Название
Описание
- connectionForProxy
Возвращает соединение, используемое текущим объектом.

Настройка протокола прокси

Название
Описание
- setProtocolForProxy:
Задает методы, которые могут быть вызваны текущим объектом в виде протокола.

iOS7 иконки для OS X

iOS7 иконки для OS X + бонус - обои для рабочего стола.


Список иконок:

Automator
Informations Système
Adobe BR.png
Aide-Memoire.png
Alfred.png
Any Send.png
Apple Script.png
Assistant Migration.png
Audio Switcher.png
Audio-Midi.png
Bluetooth.png
Bootcamp.png
Capture.png
Chess.png
CleanMyMac.png
Coktail.png
Colloquy.png
Colorimetre Numerique.png
Console.png
Crush FTP.png
Diskaid.png
Dropbox.png
Flac.png
Flavours.png
ForkLift.png
Geektool.png
GfxCardStatus.png
Grapher.png
Icon Slate.png
iConvert.png
iDefrag.png
iMenu.png
iSFV.png
iStats.png
iWatermark.png
Logitech.png
Nicecast.png
Permute.png
Photo Booth.png
QRcode.png
Record Audio Pro.png
Silverlight.png
Smultron.png
Sparrow.png
TinyUmbrella.png
Utilitaire AirPort.png
Utilitaire Raid.png
Utilitaire VoiceOver.png
XDJ-Aero.png
XLD.png


Скачать

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:
Устанавливает заданный объект делегатом кэша.