antonio's blog

antonio's blog


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

Tags


objective-c

Сохранение пользовательских настроек с помощью NSUserDefaults

Для хранения пользовательских настроек месжду запусками приложения в Cocoa имеется класс NSUserDefaults. Каждому приложению доступен общий экземпляр класса NSUserDefaults. Доступ к этум экземпляру осуществляется с помощью вызова статического метода standardUserDefaults: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];…

antonioantonio

Возвращаемый тип instancetype

В версию 5.0 Xcode (LLVM 5/Clang 5) была добавлена поддержка нового ключевого слова для Objective-C - instancetype. Для чего оно нужно? В соответствии с принятыми в Cocoa соглашениями наименования методов, Objective-C методы с названиями начинающимися с init, alloc, copy, а также методы с названиями new, autorelease, retain, self должн…

antonioantonio

Класс NSNumber

Класс NSNumber является подклассом NSValue, объекты которого позволяют хранить значения скалярных числовых типов языка С. Класс добавляет набор методов для установки и чтения знаковых и без знаковых числовых типов, к которым относятся: char, short int, int, long int, long long int, float, double, NSInteger, BOOL. Объекты класса являют…

antonioantonio

AutoLayout в iOS. Часть 3

Когда пользовательский интерфейс сложнее того, что мы создали в примере, то количество создаваемых связей, а соответственно и кода, становится в разы больше. Создание связей в коде и их дальнейшая отладка становится трудоемкой и утомительной задачей. Создание связей значительно упрощает визуальный формат для описания связей (Visual Format…

antonioantonio

AutoLayout в iOS. Часть 2

Создавать AutoLayout связи между UI элементами можно не только в Interface Builder, это можно делать и программно Рассмотрим создание связей в коде на простом примере. В первом примере создадим пользовательский интерфейс с тремя кнопками, как показано на картинке ниже. Такой интерфейс мы уже создавали с помощью Interface Builder. Итак, пр…

antonioantonio

AutoLayout в iOS. Часть 1

Помимо других интересных возможностей, в iOS 6 SDK был добавлен новый механизм расположения пользовательских элементов на экране, который называется AutoLayout (автомакет, автокомпановка). AutoLayout используется для построения динамических пользовательских интерфейсов, масштабируемых и адаптируемых к различным форматам и разрешениям экр…

antonioantonio

Класс NSUUID

NSUUID класс позволяет создавать UUID (Universally Unique Identifier). UUID используется в программном обеспечении для идентификации устройств, информации, объектов, элементов и др., без опасения возникновения конфликтов из-за совпадения идентификаторов. UUID, также известный как GUID (Globally Unique Identifiers) и IIDs (Interface Ide…

antonioantonio

Класс NSNull

Класс NSNull представляет из себя контейнер для типа null и применяется для его размещения в коллекциях NSArray, NSDictonary, NSSet и др., которые не позволяют размещать nil/NULL значения в явном виде. Класс является синглтоном (Singleton) и принимает следующие протоколы: NSCoding NSCopying Класс реализует единственный метод класса - nul…

antonioantonio

Класс 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