29 апр. 2014 г.

Категории - теория и пример

Язык Objective-C обладает возможностью добавлять новые методы к уже существующим классам (т.е. расширение функциональности класса). При этом не требуется исходников класса и добавленные методы автоматически становятся доступными всем классам, унаследованным от изменяемого. Так можно добавить новый метод классу NSString (возьмем за пример) и этот метод автоматически добавится во все остальные классы. Механизм, позволяющий расширять уже существующие...

27 апр. 2014 г.

View-based NSTableView на основе ячеек из NSView (Злосчастная кнопка). Продолжение

В предыдущей статье о View-based NSTableView на основе ячеек из NSView не было реализации по использованию кнопки на виде (замечание в комментарии читателя). Порывшись в поиске (вместе с несуразными лексическими словосочетаниями), хоть какого-то решения так и не было найдено. Было решено использовать делегат и дать право AppDelegate кликать на эту злосчастную кнопку.  Все бы ничего, но как узнать индекс этой чертовой вьюхи, на которой...

20 апр. 2014 г.

Кастомизация строки / Атрибуты строки

Кастомизация строки состоит в том чтобы изменить в строке в определенном слове или символе цвет, шрифт, высоту и т.д. За все это отвечают классы NSAttributedString и NSMutableAttributedString. Например поменяем шрифт для первых пяти символов: NSMutableAttributedString *seatText = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Seats\n%d", seats]]; [seatText addAttribute:NSFontAttributeName                  value:[UIFont boldSystemFontOfSize:25.0F]     ...

14 апр. 2014 г.

View-based NSTableView на основе ячеек из NSView

Суть построения View-based таблицы заключается в том, чтобы вместо обычных строк, состоящих из NSImageView и NSTextField (как показано в предыдущем примере), создать кастомную (свою модель компонентов в строке) строку. И здесь как всегда на помощь приходит NSView, а точнее NSViewController - класс. Создаем новый проект. Назовем его ViewBasedNSTableViewWithNSView (Вы можете его назвать по своему, суть этого не меняется). Как и в предыдущем примере...

9 апр. 2014 г.

Класс NSNumber - примеры

Этот класс является одним из самых странных дополнений в языке Objective-C. Для обработки числовых типов достаточно внутренних функций и методов. Единственная, как бы, цель класса NSNumber это обработка объектов NSArray, который хранит в себе только объекты. Инициализация объекта NSNumber Суть такова, что основные методы инициализации начинаются одинаково, но отличаются лишь конечным типом числа, т.е. что имеется в виду: numberWith<Unsigned><Type> Исходя из этого полное имя метода, для определенного типа числа, выглядит так: numberWithBool numberWithChar numberWithDouble numberWithFloat numberWithInt numberWithInteger numberWithLong numberWithLongLong numberWithShort numberWithUnsignedChar numberWithUnsignedInt numberWithUnsignedInteger numberWithUnsignedLong numberWithUnsignedLongLong numberWithUnsignedShort Например: NSNumber...

6 апр. 2014 г.

Определение объема HDD и оставшегося свободного места

Определение объема HDD и оставшегося свободного места //get startup disk total size+(NSNumber *)getDiskTotalSize{    NSDictionary *attr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:nil];        return [attr objectForKey:NSFileSystemSize];}//get startup disk's free size+(NSNumber *)getDiskAvailableSize{    NSDictionary *attr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:nil];        return [attr objectForKey:NSFileS...

Определение домашней папки пользователя

Определение домашней папки пользователя //get user home+(NSString *)getUserHome{    const char *home = getpwuid(getuid())->pw_dir;    NSString *path = [[NSFileManager defaultManager]                      stringWithFileSystemRepresentation:home                      length:strlen(home)];    NSString *realHomeDirectory = [[NSURL fileURLWithPath:path isDirectory:YES] path];       ...

Перекодировка строки в UTF8 и обратно

Код перекодировки строки в UTF8 и обратно //Encode NSString to UTF8 + (NSString *)encode2UTF8:(NSString *)originalStr {     NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)originalStr,NULL,NULL,kCFStringEncodingUTF8));          return encodedString; } //Decode UTF8 NSString + (NSString *)decodeFromUTF8:(NSString *)utf8Str {     return [utf8Str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; ...

3 апр. 2014 г.

Системные директории в Objective-C

Директория /tmp Большинство операционных систем имеют стандартный каталог предоставленный специально для целей временного хранения файлов. Другие системы также обеспечивают другую временную папку для каждого пользователя. Точное место отличается в зависимости от платформы. Самым безопасным будет использование NSTemporaryDirectory(), чтобы определить соответствующий каталог. Эта функция возвращает временный каталог для текущего пользователя в виде объекта NSString. Следующий фрагмент кода определяет и затем отображает временный каталог, используя...

2 апр. 2014 г.

Обработка файлов с помощью класса NSFileHandle

Класс NSFileHandle предоставляет широкий спектр методов, предназначенных для обеспечения более продвинутого механизма работы с файлами. В дополнение к файлам, этот класс также может быть использован для работы с устройствами и сетевыми сокетами. В следующих пунктах Мы рассмотрим некоторые из наиболее распространенных применений данного класса. Инициализация NSFileHandle класса Объект NSFileHandle создется при открытии файла для чтения, записи или обновления (чтение и запись). Это достигается с помощью fileHandleForReadingAtPath, fileHandleForWritingAtPath...

NSFileManager - работа с каталогами и файлами (примеры). Часть 2

Продолжение первой части примеров по NSFileManager. Копирование файла Копирование файлов может быть достигнуто с помощью метода copyItemAtPath. Как и в методе перемещения, этот метод принимает в качестве аргументов путь-источник и путь назначения, а также дополнительный объект NSError. Успех операции в возвращенном логическое значении: NSFileManager *filemgr; filemgr = [NSFileManager defaultManager]; if ([filemgr copyItemAtPath: @"/tmp/myfile.txt" toPath: @"/Users/demo/newfile.txt" error: NULL] == YES) NSLog (@"Скопировано"); else ...

NSFileManager - работа с каталогами и файлами (примеры). Часть 1

Инициализация NSFileManager Класс NSFileManager содержит метод класса с именем defaultManager, который используется для создания экземпляра класса. Например: получить ссылку на экземпляр объекта NSFileManager: NSFileManager *filemgr; filemgr = [NSFileManager defaultManager]; Проверка на наличие или отсутствие файла Класс NSFileManager содержит метод экземпляра с именем fileExistsAtPath, который проверяет, существует ли указанный файл. Метод принимает в качестве аргумента объект NSString, содержащий путь к файлу и возвращает логическое...