NSValue
NSValue
объект является простым контейнером для единственного C или элемента данных Objective C. Это может содержать любой из скалярных типов такой как int
, float
, и char
, а также указатели, структуры и объект id
ссылки. Используйте этот класс для работы с такими типами данных в наборах (такой как NSArray
и NSSet
), кодирование значения ключа и другой APIs, требующий объектов Objective C. NSValue
объекты являются всегда неизменными.
Разделение на подклассы примечаний
Краткий обзор NSValue
класс является открытым интерфейсом кластера класса, состоящего главным образом из частных, реальных классов, создающих и возвращающих объект значения, подходящий для данной ситуации. Возможно разделить на подклассы NSValue
, но выполнение так требует обеспечения складов для значения (который не наследован подклассами), и реализация двух примитивных методов.
Методы для переопределения
Любой подкласс NSValue
должен переопределить примитивные методы экземпляра getValue:
и objCType
. Эти методы должны воздействовать на хранение, что Вы предусматриваете значение.
Вы могли бы хотеть реализовать инициализатор для своего подкласса, подходящего для хранения, которое Вы обеспечиваете. NSValue
класс не имеет определяемого инициализатора, таким образом, Ваш инициализатор должен только вызвать init
метод super
. NSValue
класс принимает NSCopying
и NSSecureCoding
протоколы; если Вы хотите экземпляры своего собственного подкласса, создаваемого из копирования или кодирования, переопределяете методы в этих протоколах.
Можно также хотеть реализовать hash
метод, чтобы заставить Ваш подкласс работать хорошо в наборах.
Альтернативы разделению на подклассы
Если необходимо только использовать NSValue
объекты для обертки пользовательские типы данных или структуры, определенные Вашим приложением, Вы не должны создавать NSValue
подкласс. Вместо этого создайте категорию, использующую существующий NSValue
методы, чтобы сохранить и получить данные Вашего пользовательского типа. Например, код ниже определяет пользовательскую структуру Многогранника и создает NSValue
удобные методы сохранить и получить его:
typedef struct {
int numFaces;
float radius;
} Polyhedron;
@interface NSValue (Polyhedron)
+ (instancetype)valuewithPolyhedron:(Polyhedron)value;
@property (readonly) Polyhedron polyhedronValue;
@end
@implementation NSValue (Polyhedron)
+ (instancetype)valuewithPolyhedron:(Polyhedron)value
{
return [self valueWithBytes:&value objCType:@encode(Polyhedron)];
}
- (Polyhedron) polyhedronValue
{
Polyhedron value;
[self getValue:&value];
return value;
}
@end
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
init (bytes:objCType:) - initWithBytes:objCType:
Определяемый инициализаторИнициализирует объект значения содержать указанное значение, интерпретируемое с указанным типом Objective C.
Объявление
Swift
init(bytes
value
: UnsafePointer<Void>, objCTypetype
: UnsafePointer<Int8>)Objective C
- (instancetype)initWithBytes:(const void *)
value
objCType:(const char *)type
Параметры
value
Указатель на данные, которые будут сохранены в новом объекте значения.
type
Тип Objective C
value
, в соответствии с@encode()
директива компилятора. Не делайте твердого кода этот параметр как струна до.Возвращаемое значение
Содержащий инициализированный объект значения
value
, который интерпретируется как то, чтобы иметь тип Objective Ctype
. Возвращенный объект мог бы отличаться, чем исходный получатель.Обсуждение
Посмотрите Темы Программирования Числа и Значения для других соображений в создании объекта значения.
Это - определяемый инициализатор для
NSValue
класс.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Создает объект значения, содержащий указанное значение, интерпретируемое с указанным типом Objective C.
Объявление
Objective C
+ (NSValue *)valueWithBytes:(const void *)
value
objCType:(const char *)type
Параметры
value
Указатель на данные, которые будут сохранены в новом объекте значения.
type
Тип Objective C
value
, в соответствии с@encode()
директива компилятора. Не делайте твердого кода этот параметр как струна до.Возвращаемое значение
Содержащий новый объект значения
value
, который интерпретируется как то, чтобы иметь тип Objective Ctype
.Обсуждение
Посмотрите Темы Программирования Числа и Значения для других соображений в создании объекта значения и примеров кода.
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Создает объект значения, содержащий указанное значение, интерпретируемое с указанным типом Objective C.
Объявление
Swift
init(_
value
: UnsafePointer<Void>, withObjCTypetype
: UnsafePointer<Int8>) -> NSValueObjective C
+ (NSValue *)value:(const void *)
value
withObjCType:(const char *)type
Параметры
value
Указатель на данные, которые будут сохранены в новом объекте значения.
type
Тип Objective C
value
, в соответствии с@encode()
директива компилятора. Не делайте твердого кода этот параметр как струна до.Возвращаемое значение
Содержащий новый объект значения
value
, который интерпретируется как то, чтобы иметь тип Objective Ctype
.Обсуждение
Этот метод имеет тот же эффект как
valueWithBytes:objCType:
и может быть осужден в будущем выпуске. Необходимо использоватьvalueWithBytes:objCType:
вместо этого.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Копирует значение в указанный буфер.
Объявление
Swift
func getValue(_
buffer
: UnsafeMutablePointer<Void>)Objective C
- (void)getValue:(void *)
buffer
Параметры
buffer
Буфер, в который можно скопировать значение. Буфер должен быть достаточно большим для содержания значения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Струна до, содержащая тип Objective C данных, содержится в объекте значения.
Объявление
Swift
var objCType: UnsafePointer<Int8> { get }
Objective C
@property(readonly) const char *objCType
Обсуждение
Это свойство обеспечивает ту же строку, произведенную
@encode()
директива компилятора.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Создает объект значения, содержащий указанный указатель.
Объявление
Swift
init(pointer
aPointer
: UnsafePointer<Void>) -> NSValueObjective C
+ (NSValue *)valueWithPointer:(const void *)
aPointer
Параметры
aPointer
Значение для нового объекта.
Возвращаемое значение
Содержащий новый объект значения
aPointer
.Обсуждение
Этот метод эквивалентен вызову
value:withObjCType:
этим способом:NSValue *theValue = [NSValue value:&aPointer withObjCType:@encode(void *)];
Этот метод не копирует содержание
aPointer
, таким образом, Вы не должны для освобождения памяти в месте назначения указателя в то время какNSValue
объект существует.NSData
объекты могут больше подойти для произвольных указателей, чемNSValue
объекты.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Создает объект значения, содержащий указанный объект.
Объявление
Swift
init(nonretainedObject
anObject
: AnyObject?) -> NSValueObjective C
+ (NSValue *)valueWithNonretainedObject:(id)
anObject
Параметры
anObject
Значение для нового объекта.
Возвращаемое значение
Содержащий новый объект значения
anObject
.Обсуждение
Этот метод эквивалентен вызову
value:withObjCType:
этим способом:NSValue *theValue = [NSValue value:&anObject withObjCType:@encode(void *)];
Этот метод полезен, если Вы хотите добавить объект к набору, но не хотите, чтобы набор создал сильную ссылку к нему.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает значение как невведенный указатель.
Объявление
Swift
func pointerValue() -> UnsafeMutablePointer<Void>
Objective C
- (void *)pointerValue
Возвращаемое значение
Значение как указатель на недействительный. Если объект значения не создавался для содержания элемента данных размера указателя, результат не определен.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Значение как несохраненный указатель на объект. (только для чтения)
Объявление
Swift
var nonretainedObjectValue: AnyObject? { get }
Objective C
@property(nonatomic, readonly) id nonretainedObjectValue
Обсуждение
Если ценность не была создана для содержания элемента данных размера указателя, результат не определен.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Создает новый объект значения, содержащий указанную структуру диапазона Основы.
Объявление
Swift
init(range
range
: NSRange) -> NSValueObjective C
+ (NSValue *)valueWithRange:(NSRange)
range
Параметры
range
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию о диапазоне.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
rangeValue rangeValue
СвойствоПредставление структуры диапазона Основы значения. (только для чтения)
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Создает новый объект значения, содержащий указанную структуру точки Основы.
Объявление
Swift
init(point
aPoint
: NSPoint) -> NSValueObjective C
+ (NSValue *)valueWithPoint:(NSPoint)
aPoint
Параметры
aPoint
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию о точке.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Создает новый объект значения, содержащий указанную структуру размера Основы.
Объявление
Swift
init(size
size
: NSSize) -> NSValueObjective C
+ (NSValue *)valueWithSize:(NSSize)
size
Параметры
size
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию о размере.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Создает новый объект значения, содержащий указанную прямоугольную структуру Основы.
Объявление
Swift
init(rect
rect
: NSRect) -> NSValueObjective C
+ (NSValue *)valueWithRect:(NSRect)
rect
Параметры
rect
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий данные в
rect
структура.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
pointValue pointValue
СвойствоПредставление структуры точки Основы значения. (только для чтения)
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Представление структуры размера Основы значения. (только для чтения)
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Прямоугольное представление структуры Основы значения. (только для чтения)
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Создает новый объект значения, содержащий указанный CoreAnimation, преобразовывают структуру.
Объявление
Swift
init!(CATransform3D
aTransform
: CATransform3D) -> NSValueObjective C
+ (NSValue *)valueWithCATransform3D:(CATransform3D)
aTransform
Параметры
aTransform
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию о преобразовании.
Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в OS X v10.5 и позже.
См. также
CATransform3DValue
CATransform3D
-
CATransform3DValue CATransform3DValue
СвойствоCoreAnimation преобразовывают представление структуры значения. (только для чтения)
Объявление
Swift
var CATransform3DValue: CATransform3D { get }
Objective C
@property(readonly) CATransform3D CATransform3DValue
Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в OS X v10.5 и позже.
См. также
+ valueWithCATransform3D:
CATransform3D
-
Создает новый объект значения, содержащий указанную временную структуру CoreMedia.
Объявление
Swift
init!(CMTime
time
: CMTime) -> NSValueObjective C
+ (NSValue *)valueWithCMTime:(CMTime)
time
Параметры
time
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию времени носителей.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Создает новый объект значения, содержащий указанную структуру диапазона времени CoreMedia.
Объявление
Swift
init!(CMTimeRange
timeRange
: CMTimeRange) -> NSValueObjective C
+ (NSValue *)valueWithCMTimeRange:(CMTimeRange)
timeRange
Параметры
timeRange
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию о диапазоне времени.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Создает новый объект значения, содержащий указанную структуру отображения времени CoreMedia.
Объявление
Swift
init!(CMTimeMapping
timeMapping
: CMTimeMapping) -> NSValueObjective C
+ (NSValue *)valueWithCMTimeMapping:(CMTimeMapping)
timeMapping
Параметры
timeMapping
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий информацию об отображении времени.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
CMTimeValue CMTimeValue
СвойствоПредставление временной структуры CoreMedia значения. (только для чтения)
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
CMTimeRangeValue CMTimeRangeValue
СвойствоПредставление структуры диапазона времени CoreMedia значения. (только для чтения)
Объявление
Swift
var CMTimeRangeValue: CMTimeRange { get }
Objective C
@property(readonly) CMTimeRange CMTimeRangeValue
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
CMTimeMappingValue CMTimeMappingValue
СвойствоВремя CoreMedia, отображая представление структуры значения. (только для чтения)
Объявление
Swift
var CMTimeMappingValue: CMTimeMapping { get }
Objective C
@property(readonly) CMTimeMapping CMTimeMappingValue
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Создает новый объект значения, содержащий указанный CoreLocation географическая координатная структура.
Объявление
Swift
init!(MKCoordinate
coordinate
: CLLocationCoordinate2D) -> NSValueObjective C
+ (NSValue *)valueWithMKCoordinate:(CLLocationCoordinate2D)
coordinate
Параметры
coordinate
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий географическую координатную информацию.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
См. также
-
Создает новый объект значения, содержащий указанную структуру промежутка координаты MapKit.
Объявление
Swift
init!(MKCoordinateSpan
span
: MKCoordinateSpan) -> NSValueObjective C
+ (NSValue *)valueWithMKCoordinateSpan:(MKCoordinateSpan)
span
Параметры
span
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий координатную информацию о промежутке.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
См. также
-
MKCoordinateValue MKCoordinateValue
СвойствоCoreLocation географическое координатное представление структуры значения. (только для чтения)
Объявление
Swift
var MKCoordinateValue: CLLocationCoordinate2D { get }
Objective C
@property(readonly) CLLocationCoordinate2D MKCoordinateValue
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
MapKit координируют представление структуры промежутка значения. (только для чтения)
Объявление
Swift
var MKCoordinateSpanValue: MKCoordinateSpan { get }
Objective C
@property(readonly) MKCoordinateSpan MKCoordinateSpanValue
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает объект значения, содержащий указанный вектор SceneKit с тремя элементами.
Объявление
Swift
init!(SCNVector3
vector
: SCNVector3) -> NSValueObjective C
+ (NSValue *)valueWithSCNVector3:(SCNVector3)
vector
Параметры
vector
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий векторную информацию.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
Создает объект значения, содержащий указанный вектор SceneKit с четырьмя элементами.
Объявление
Swift
init!(SCNVector4
vector
: SCNVector4) -> NSValueObjective C
+ (NSValue *)valueWithSCNVector4:(SCNVector4)
vector
Параметры
vector
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий векторную информацию.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
Создает объект значения, содержащий указанную матрицу SceneKit 4 x 4.
Объявление
Swift
init!(SCNMatrix4
v
: SCNMatrix4) -> NSValueObjective C
+ (NSValue *)valueWithSCNMatrix4:(SCNMatrix4)
v
Параметры
v
Значение для нового объекта.
Возвращаемое значение
Новый объект значения, содержащий матричную информацию.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
SCNVector3Value SCNVector3Value
СвойствоПредставление вектора Набора Сцены с тремя элементами значения. (только для чтения)
Объявление
Swift
var SCNVector3Value: SCNVector3 { get }
Objective C
@property(readonly) SCNVector3 SCNVector3Value
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
SCNVector4Value SCNVector4Value
СвойствоПредставление вектора Набора Сцены с четырьмя элементами значения. (только для чтения)
Объявление
Swift
var SCNVector4Value: SCNVector4 { get }
Objective C
@property(readonly) SCNVector4 SCNVector4Value
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
SCNMatrix4Value SCNMatrix4Value
СвойствоНабор Сцены 4 x 4 матричных представления значения. (только для чтения)
Объявление
Swift
var SCNMatrix4Value: SCNMatrix4 { get }
Objective C
@property(readonly) SCNMatrix4 SCNMatrix4Value
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Возвращает булево значение, указывающее, равны ли объект значения и другой объект значения.
Объявление
Swift
func isEqualToValue(_
aValue
: NSValue) -> BoolObjective C
- (BOOL)isEqualToValue:(NSValue *)
aValue
Параметры
aValue
Другое значение возражает, с которым можно сравнить объект значения.
Возвращаемое значение
YES
true
если оба объекта значения равны; иначе,NO
false
.Обсуждение
NSValue
класс сравнивает тип и содержание каждого объекта значения определить равенство.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.