Для хранения пользовательских настроек месжду запусками приложения в Cocoa имеется класс NSUserDefaults. Каждому приложению доступен общий экземпляр класса NSUserDefaults. Доступ к этум экземпляру осуществляется с помощью вызова статического метода standardUserDefaults: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];…
antonio
В версию 5.0 Xcode (LLVM 5/Clang 5) была добавлена поддержка нового ключевого слова для Objective-C - instancetype. Для чего оно нужно? В соответствии с принятыми в Cocoa соглашениями наименования методов, Objective-C методы с названиями начинающимися с init, alloc, copy, а также методы с названиями new, autorelease, retain, self должн…
antonio
Класс NSNumber является подклассом NSValue, объекты которого позволяют хранить значения скалярных числовых типов языка С. Класс добавляет набор методов для установки и чтения знаковых и без знаковых числовых типов, к которым относятся: char, short int, int, long int, long long int, float, double, NSInteger, BOOL. Объекты класса являют…
antonio
Когда пользовательский интерфейс сложнее того, что мы создали в примере, то количество создаваемых связей, а соответственно и кода, становится в разы больше. Создание связей в коде и их дальнейшая отладка становится трудоемкой и утомительной задачей. Создание связей значительно упрощает визуальный формат для описания связей (Visual Format…
antonio
Создавать AutoLayout связи между UI элементами можно не только в Interface Builder, это можно делать и программно Рассмотрим создание связей в коде на простом примере. В первом примере создадим пользовательский интерфейс с тремя кнопками, как показано на картинке ниже. Такой интерфейс мы уже создавали с помощью Interface Builder. Итак, пр…
antonio
Помимо других интересных возможностей, в iOS 6 SDK был добавлен новый механизм расположения пользовательских элементов на экране, который называется AutoLayout (автомакет, автокомпановка). AutoLayout используется для построения динамических пользовательских интерфейсов, масштабируемых и адаптируемых к различным форматам и разрешениям экр…
antonio
NSUUID класс позволяет создавать UUID (Universally Unique Identifier). UUID используется в программном обеспечении для идентификации устройств, информации, объектов, элементов и др., без опасения возникновения конфликтов из-за совпадения идентификаторов. UUID, также известный как GUID (Globally Unique Identifiers) и IIDs (Interface Ide…
antonio
Класс NSNull представляет из себя контейнер для типа null и применяется для его размещения в коллекциях NSArray, NSDictonary, NSSet и др., которые не позволяют размещать nil/NULL значения в явном виде. Класс является синглтоном (Singleton) и принимает следующие протоколы: NSCoding NSCopying Класс реализует единственный метод класса - nul…
antonio
Класс NSValue представляет собой простой контейнер для C данных и Objective-C и применяется для создания объектов из скалярных данных, для последующего их использования в коллекциях NSArray, NSDictonary, NSSet и др., которые работают только с объектами. Объекты класса NSValue способны сохранить любые скаларные данные, такие как, int, flo…
antonio
Протоколы в Objective-C описывают методы, которые должны реализовать классы принимающие эти протоколы. Методы описанные в протоколе не имеют собственной реализации, они реализуются в принимающем протокол классе. В других языках программирования протоколы известны как абстрактные классы и интерфейсы. Описание протокола начинается с дир…
antonio
Категории в Objective-C - это механизм позволяющий расширять существующие классы. Используя категории к классу можно добавить новые методы без применения наследованная и не имея исходников изменяемого класса. Добавляемые таким способом методы становятся доступными всем классам, унаследованным от изменяемого. С помощью категорий также м…
antonio
Бывает к существующему классу необходимо добавить переменные экземпляра, в категории objective-c нельзя определить переменные экземпляра. Нельзя определить прямым способом, но можно воспользоваться функциями runtime библиотеки. Рассмотри создание переменных экземпляра на примере. Создадим категорию расширяющую класс NSString, у категории…
antonio
Паттерн проектирования Singleton (синглтон) используется когда в приложении необходимо иметь один единственный экземпляр класса. В Cocoa данный паттерн проектирования используется довольно часто. Например, классы NSApplication, NSExceptionHandler NSUserDefaults являются синглтонами. Создать свой класс синглтон не составляет труда. Для эт…
antonio
Класс NSCountedSet, также как и класс NSSet предназначен для создания неупорядоченного набора объектов, но в отличие от него позволяет создавать изменяемые (mutable), не уникальные наборы. NSCountedSet является подклассом NSSet Класс принимает следующие протоколы (наследование от NSSet): NSCoding NSCopying NSMutableCopying NSFastEnumer…
antonio