init(bytes: UnsafeRawPointer, objCType : UnsafePointer<CChar>)
init(UnsafeRawPointer, withObjCType : UnsafePointer<CChar>)
func getValue (UnsafeMutableRawPointer)
var objCType : UnsafePointer<CChar>
Availability 有効性
Technology
class NSValue : NSObject
An NSValue
object can hold any of the scalar types such as int
, float
, and char
, as well as pointers, structures, and object id
references. Use this class to work with such data types in collections (such as NSArray
and NSSet
), Key-value coding, and other APIs that require Objective-C objects. NSValue
objects are always immutable.
NSValue
オブジェクトは何らかのスカラー型を保持できます、たとえばint
、float
、そしてchar
、それだけでなくポインタ、構造体、そしてオブジェクトid
参照など。このクラスを使うことでそのようなデータ型を、コレクション(たとえばNSArray
およびNSSet
)、キー値コーディング、そしてObjective-Cオブジェクトを要求する他のAPIにおいて扱ってください。NSValue
オブジェクトは常に不変です。
The abstract NSValue
class is the public interface of a class cluster consisting mostly of private, concrete classes that create and return a value object appropriate for a given situation. It is possible to subclass NSValue
, but doing so requires providing storage facilities for the value (which is not inherited by subclasses) and implementing two primitive methods.
抽象NSValue
クラスは、大部分がプライベートな、具象クラスそれらから成るクラスクラスタのパブリックインターフェイスです、それは値オブジェクトをある与えられた状況に適切に作成して返します。NSValue
のサブクラスを作成することは可能です、しかしそうすることはストレージ設備を値に対して提供すること(それはサブクラスによって継承されません)そして2つの基本的メソッドを実装することを必要とします。
Any subclass of NSValue
must override the primitive instance methods get
and obj
. These methods must operate on the storage that you provide for the value.
NSValue
のあらゆるサブクラスに必須なことは、根本的インスタンスメソッドのget
とobj
のオーバーライドです。これらのメソッドは、あなたが値に対して提供するストレージ上で演算を行わなければなりません。
You might want to implement an initializer for your subclass that is suited to the storage you provide. The NSValue
class does not have a designated initializer, so your initializer need only invoke the init()
method of super
. The NSValue
class adopts the NSCopying
and NSSecure
protocols; if you want instances of your own custom subclass created from copying or coding, override the methods in these protocols.
あなたは、あなたのサブクラスに対して、あなたが提供するストレージに適したイニシャライザを実装したいかもしれません。NSValue
クラスは指定イニシャライザを持ちません、それであなたのイニシャライザはsuper
のinit()
メソッドの発動だけが必要です。NSValue
クラスは、NSCopying
およびNSSecure
プロトコルを採用します;あなたがコピーまたはコーディングから作成されるあなた自身のカスタムサブクラスのインスタンスを望むならば、これらプロトコルにおいてメソッドをオーバーライドしてください。
You may also wish to implement the hash
method to make your subclass work well in collections.
あなたはまた、hash
メソッドを実装してあなたのサブクラスがコレクションにおいてうまく働くように希望するかもしれません。
If you need only to use NSValue
objects for wrap a custom data types or structures defined by your app, you need not create an NSValue
subclass. Instead, create a category that uses existing NSValue
methods to store and retrieve data of your custom type. For example, the code below defines a custom Polyhedron structure and creates NSValue
convenience methods to store and retrieve it:
あなたがNSValue
オブジェクトを単にあなたのアプリによって定義されるあつらえのデータ型または構造体をラップするためにだけ使う必要があるならば、あなたはNSValue
サブクラスを作成する必要はありません。代わりに、既存のNSValue
メソッドを使ってあなたのあつらえの型のデータを格納および回収するあるカテゴリを作成してください。例えば、下のコードはあるあつらえのPolyhedron構造体を定義して、NSValue
便宜メソッドを作成することでそれを格納および回収します。
init(bytes: UnsafeRawPointer, objCType : UnsafePointer<CChar>)
init(UnsafeRawPointer, withObjCType : UnsafePointer<CChar>)
func getValue (UnsafeMutableRawPointer)
var objCType : UnsafePointer<CChar>
init(pointer: UnsafeRawPointer?)
init(nonretainedObject : Any?)
var pointerValue : UnsafeMutableRawPointer?
var nonretainedObjectValue : Any?
init(range: NSRange)
var rangeValue : NSRange
init(point: NSPoint)
init(size: NSSize)
init(rect: NSRect)
var pointValue : NSPoint
var sizeValue : NSSize
var rectValue : NSRect
init(cgPoint : CGPoint)
init(cgVector : CGVector)
init(cgSize : CGSize)
init(cgRect : CGRect)
init(cgAffineTransform : CGAffineTransform)
var cgPointValue : CGPoint
var cgVectorValue : CGVector
var cgSizeValue : CGSize
var cgRectValue : CGRect
var cgAffineTransformValue : CGAffineTransform
init(uiEdgeInsets : UIEdgeInsets)
init(uiOffset : UIOffset)
var uiEdgeInsetsValue : UIEdgeInsets
var uiOffsetValue : UIOffset
init(caTransform3D : CATransform3D)
var caTransform3DValue : CATransform3D
init(time: CMTime)
init(timeRange : CMTimeRange)
init(timeMapping : CMTimeMapping)
var timeValue : CMTime
var timeRangeValue : CMTimeRange
var timeMappingValue : CMTimeMapping
init(mkCoordinate : CLLocationCoordinate2D)
init(mkCoordinateSpan : MKCoordinateSpan)
var mkCoordinateValue : CLLocationCoordinate2D
var mkCoordinateSpanValue : MKCoordinateSpan
init(scnVector3 : SCNVector3)
init(scnVector4 : SCNVector4)
init(scnMatrix4 : SCNMatrix4)
var scnVector3Value : SCNVector3
var scnVector4Value : SCNVector4
var scnMatrix4Value : SCNMatrix4
func isEqual (to: NSValue) -> Bool
class NSNumber
class ValueTransformer