antonio's blog

antonio's blog


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

Tags


antonio
Author

antonio

Класс NSValue

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

antonioantonio

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

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

antonioantonio

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

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

antonioantonio

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

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

antonioantonio

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

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

antonioantonio

Класс NSCountedSet

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

antonioantonio

Класс NSMutableSet

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

antonioantonio

Класс NSSet

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

antonioantonio

Литералы 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…

antonioantonio

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

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

antonioantonio

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

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

antonioantonio

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

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

antonioantonio

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

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

antonioantonio