antonio's blog

antonio's blog


Блог о всяком разном, связанном с разработкой ПО. Пишу редко, когда есть время и желание.

Tags


Класс NSValue

Класс NSValue представляет собой простой контейнер для C данных и Objective-C и применяется для создания объектов из скалярных данных, для последующего их использования в коллекциях NSArray, NSDictonary, NSSet и др., которые работают только с объектами. Объекты класса NSValue способны сохранить любые скаларные данные, такие как, int, flo…

Anton DobkinAnton Dobkin

Протоколы в Objective-C

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

Anton DobkinAnton Dobkin

Категории в Objective-C

Категории в Objective-C - это механизм позволяющий расширять существующие классы. Используя категории к классу можно добавить новые методы без применения наследованная и не имея исходников изменяемого класса. Добавляемые таким способом методы становятся доступными всем классам, унаследованным от изменяемого. С помощью категорий также м…

Anton DobkinAnton Dobkin

Переменные экземпляра с помощью категории в Objective-C

Бывает к существующему классу необходимо добавить переменные экземпляра, в категории objective-c нельзя определить переменные экземпляра. Нельзя определить прямым способом, но можно воспользоваться функциями runtime библиотеки. Рассмотри создание переменных экземпляра на примере. Создадим категорию расширяющую класс NSString, у категории…

Anton DobkinAnton Dobkin

Паттерн проектирования Singleton

Паттерн проектирования Singleton (синглтон) используется когда в приложении необходимо иметь один единственный экземпляр класса. В Cocoa данный паттерн проектирования используется довольно часто. Например, классы NSApplication, NSExceptionHandler NSUserDefaults являются синглтонами. Создать свой класс синглтон не составляет труда. Для эт…

Anton DobkinAnton Dobkin

Класс NSCountedSet

Класс NSCountedSet, также как и класс NSSet предназначен для создания неупорядоченного набора объектов, но в отличие от него позволяет создавать изменяемые (mutable), не уникальные наборы. NSCountedSet является подклассом NSSet Класс принимает следующие протоколы (наследование от NSSet): NSCoding NSCopying NSMutableCopying NSFastEnumer…

Anton DobkinAnton Dobkin

Класс NSMutableSet

Класс NSMutableSet, также как и NSSet, предназначен для создания неупорядоченного набора уникальных объектов, но в отличие от него позволяет создавать изменяемые (mutable) наборы. NSMutableSet является подклассом NSSet Класс принимает следующие протоколы (наследование от NSSet): NSCoding NSCopying NSMutableCopying NSFastEnumeration Кл…

Anton DobkinAnton Dobkin

Класс NSSet

Класс NSSet предназначен для создания не упорядоченного набора объектов - множеств. В отличие от массивов, в NSSet элемент может встретиться только один раз, т.е все элементы уникальны. Вы можете использовать наборы как альтернативу массивам, когда порядок хранения элементов не имеет значения, а производительность при проверке принадлеж…

Anton DobkinAnton Dobkin

Литералы NSNumber, NSArray, NSDictionary в LLVM 4.0

Поддержка литералов в Objective-C для NSNumber, NSArray, NSDictionary появилась в Xcode c версии 4.4 (LLVM 4.0). Используя новый синтаксис нет возможности создавать изменяемые экземпляры NSNumber /* Допустимо использование суффиксов: u - unsigned, f - float, l - long, ll - long long */ NSNumber *myNumber = @10u; /* Эквивалентно */ NSNumb…

Anton DobkinAnton Dobkin

Разработка расширений для PHP. Ресурсы

Ресурсы в PHP - это специальный, абстрактный тип в котором можно хранить любые пользовательские данные. К таким данным можно отнести дескрипторы файлов, структуры данных, различные хэндлы и т.д. У каждого ресурса есть уникальный идентификатор - простое цело число, которое храниться в структуре zval и используется как индекс внутренней хэш…

Anton DobkinAnton Dobkin

Обработка ошибок в LibXML2

В библиотеке libxml2 есть несколько функций с помощью которых можно задать пользовательские callback-функции для обработки общих ошибок. Эти функции будут вызваны библиотекой при обнаружении ошибки во время обработки XML документа. Первая функция initGenericErrorDefaultFunc() устанавливает или сбрасывает, ранее установленный, обработчик…

Anton DobkinAnton Dobkin

Разработка расширений для PHP. Информация о расширении

Для добавления информации о расширении в вывод функции phpinfo() (или php -i в CLI), необходимо определить функцию MINFO с помощью макроса PHP_MINFO_FUNCTION: PHP_MINFO_FUNCTION(ext_name) { ... } Эта функция будет вызвана автоматически при вызове, из пользовательского пространства, функции phpinfo() или при выполнении команды php -i и…

Anton DobkinAnton Dobkin

Прогресс загрузки файлов в PHP 5.4

Всем кому приходилось реализовать на PHP загрузку файлов на сервер с отображением "реального" прогресс бара знают, что задача не из простых. Для создания полноценного прогресс бара загрузки файлов приходилось использовать сторонние расширения, такие как APC или uploadprogress. С выходом PHP 5.4 ситуация в корне изменилась. В PHP был встр…

Anton DobkinAnton Dobkin