7 мар. 2014 г.

Текущая дата OS X / iOS

Вывод текущей даты с учетом временной зоны в OS X и iOS:

NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
        
// Жесткое указание временной зоны
//[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Kyiv"]];
//[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:3600 * 2]];
        
// Временная зона указанная в системных настройках
[formatter setTimeZone:[NSTimeZone localTimeZone]];
NSLog(@"%@",[formatter stringFromDate:now]);


4 мар. 2014 г.

Очередной минималистический концепт OS XI

Эта концепция Mac OS XI - новый взгляд на рабочий стол, который включает много новых функций, таких как динамические обои и иконки, iOS экран синхронизации (дисплей c возможностью контроля своих iOS-устройств на вашем компьютере), повышенная прозрачность во всем, и более минималистична.


Второй концепт Mac OS XI. Это фокусировка на главном браузере, Safari, который был минимализирован. Safari в OS XI имеет собственные макеты, созданные для определенных веб-сайтов, которые оптимизированы для Mac OS XI. Один из таких сайтов является Google. 
Google.com в Safari скрывает все стандартные инструменты Google за кнопки меню, расположенные в нижней части страницы, похожие на недавнем эксперименте Google, с черной полосой в верхней части своей страницы.



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 г.