SlideShare a Scribd company logo
1 of 10
Download to read offline
iOS Internship 2014
NSValue
Максим Забелин
NSValue
NSValue
Предназначение
An NSValue object is a simple container for a single C or Objective-C data item. It can hold any of the
scalar types such as int, float, and char, as well as pointers, structures, and object ids. The purpose of
this class is to allow items of such data types to be added to collections such as instances of NSArray
and NSSet, which require their elements to be objects. NSValue objects are always immutable.
Может хранить что угодно (почти - см. следующий слайд), но в основном используется для
хранения struct - для остального есть NSData и NSNumber.
NSValue
NSValue
Хранить можно не все
The type you specify must be of constant length. You cannot store C strings,
variable-length arrays and structures, and other data types of indeterminate
length in an NSValue—you should use NSString or NSData objects for these
types. You can store a pointer to variable-length item in an NSValue object.
NSValue
Получить/вернуть
– initWithBytes:objCType:
+ valueWithBytes:objCType:
+ valueWithNonretainedObject:
+ valueWithPointer:
+ valueWithPoint:
+ valueWithRange:
+ valueWithRect:
+ valueWithSize:
– getValue:
– objCType
– nonretainedObjectValue
– pointerValue
– pointValue
– rangeValue
– rectValue
– sizeValue
NSValue
NSValue
valueWithBytes:objCType:
+ (NSValue *)valueWithBytes:(const void *)value objCType:
(const char *)type;
где взять этот самый objCType?
NSValue
NSValue
@encode
В Objective-C у любого типа существует его
внутреннее представление в виде строки С.
Его можно получить с помощью @encode
Например, @encode(id) == "@"
NSValue
NSValue
getValue:
- (void)getValue:(void *)value;
- копирует значение в заданный буфер. Он должен быть достаточно
большого размера.
NSValue
NSValue
Пример
typedef struct Str {
int x;
char y;
} MyStruct;
MyStruct s = (MyStruct){.x = 100, .y = 'x'};
NSValue *val = [NSValue value:&s
withObjCType:@encode(MyStruct)];
MyStruct s2;
[val getValue:&s2];
NSLog(@"%i, %c", s2.x, s2.y);
NSValue
NSValue
Полезные методы
+ valueWithPoint: для NSPoint
+ valueWithRange: для NSRange
+ valueWithRect: для CGRect
+ valueWithSize: для CGSize
– pointValue
– pointerValue
– rangeValue
– rectValue
NSValue
NSValue
Дополнительно
1. http://nshipster.com/nsvalue/
2. http://nshipster.com/type-encodings/
3. https://developer.apple.
com/library/ios/documentation/Cocoa/Conce
ptual/NumbersandValues/NumbersandValue
s.pdf

More Related Content

Viewers also liked

03 коллекции
03   коллекции03   коллекции
03 коллекцииNoveo
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKitNoveo
 
04 ns array
04   ns array04   ns array
04 ns arrayNoveo
 
обработка событий
обработка событийобработка событий
обработка событийNoveo
 
02 ns string
02   ns string02   ns string
02 ns stringNoveo
 
шаринг
шарингшаринг
шарингNoveo
 
iOS-02-Паттерны ООП
iOS-02-Паттерны ООПiOS-02-Паттерны ООП
iOS-02-Паттерны ООПNoveo
 
05 ns dictionary
05   ns dictionary05   ns dictionary
05 ns dictionaryNoveo
 
хранение данных
хранение данныххранение данных
хранение данныхNoveo
 
09 ns data
09   ns data09   ns data
09 ns dataNoveo
 
06 ns set
06   ns set06   ns set
06 ns setNoveo
 
11 ns copying, subscripting, fast enumeration
11   ns copying, subscripting, fast enumeration11   ns copying, subscripting, fast enumeration
11 ns copying, subscripting, fast enumerationNoveo
 
iOS-01-Основы Objective-C
iOS-01-Основы Objective-CiOS-01-Основы Objective-C
iOS-01-Основы Objective-CNoveo
 
работа с сетью
работа с сетьюработа с сетью
работа с сетьюNoveo
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Noveo
 
iOS-05_1-UIKit
iOS-05_1-UIKitiOS-05_1-UIKit
iOS-05_1-UIKitNoveo
 
iOS-03-Управление памятью
iOS-03-Управление памятьюiOS-03-Управление памятью
iOS-03-Управление памятьюNoveo
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизацияNoveo
 
Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииNoveo
 

Viewers also liked (19)

03 коллекции
03   коллекции03   коллекции
03 коллекции
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
 
04 ns array
04   ns array04   ns array
04 ns array
 
обработка событий
обработка событийобработка событий
обработка событий
 
02 ns string
02   ns string02   ns string
02 ns string
 
шаринг
шарингшаринг
шаринг
 
iOS-02-Паттерны ООП
iOS-02-Паттерны ООПiOS-02-Паттерны ООП
iOS-02-Паттерны ООП
 
05 ns dictionary
05   ns dictionary05   ns dictionary
05 ns dictionary
 
хранение данных
хранение данныххранение данных
хранение данных
 
09 ns data
09   ns data09   ns data
09 ns data
 
06 ns set
06   ns set06   ns set
06 ns set
 
11 ns copying, subscripting, fast enumeration
11   ns copying, subscripting, fast enumeration11   ns copying, subscripting, fast enumeration
11 ns copying, subscripting, fast enumeration
 
iOS-01-Основы Objective-C
iOS-01-Основы Objective-CiOS-01-Основы Objective-C
iOS-01-Основы Objective-C
 
работа с сетью
работа с сетьюработа с сетью
работа с сетью
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
iOS-05_1-UIKit
iOS-05_1-UIKitiOS-05_1-UIKit
iOS-05_1-UIKit
 
iOS-03-Управление памятью
iOS-03-Управление памятьюiOS-03-Управление памятью
iOS-03-Управление памятью
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 

More from Noveo

Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Noveo
 
Yii2
Yii2Yii2
Yii2Noveo
 
PHP basic
PHP basicPHP basic
PHP basicNoveo
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP AdvancedNoveo
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQLNoveo
 
MySQL
MySQLMySQL
MySQLNoveo
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)Noveo
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Noveo
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Noveo
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Noveo
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)Noveo
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Noveo
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Noveo
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)Noveo
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Noveo
 

More from Noveo (20)

Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
 

07 ns value