Class

NSValue

A simple container for a single C or Objective-C data item. 単一のCまたはObjective-Cデータ項目に対する単純なコンテナ。

Declaration 宣言

@interface NSValue : NSObject

Overview 概要

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オブジェクトは何らかのスカラー型を保持できます、たとえばintfloat、そしてchar、それだけでなくポインタ、構造体、そしてオブジェクトid参照など。このクラスを使うことでそのようなデータ型を、コレクション(たとえばNSArrayおよびNSSet)、キー値コーディング、そしてObjective-Cオブジェクトを要求する他のAPIにおいて扱ってください。NSValueオブジェクトは常に不変です。

Subclassing Notes サブクラス作成の注意

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つの基本的メソッドを実装することを必要とします。

Methods to Override メソッドのオーバーライド

Any subclass of NSValue must override the primitive instance methods getValue: and objCType. These methods must operate on the storage that you provide for the value. NSValueのあらゆるサブクラスに必須なことは、根本的インスタンスメソッドのgetValue:objCTypeのオーバーライドです。これらのメソッドは、あなたが値に対して提供するストレージ上で演算を行わなければなりません。

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 NSSecureCoding protocols; if you want instances of your own custom subclass created from copying or coding, override the methods in these protocols. あなたは、あなたのサブクラスに対して、あなたが提供するストレージに適したイニシャライザを実装したいかもしれません。NSValueクラスは指定イニシャライザを持ちません、それであなたのイニシャライザはsuperinitメソッドの発動だけが必要です。NSValueクラスは、NSCopyingおよびNSSecureCodingプロトコルを採用します;あなたがコピーまたはコーディングから作成されるあなた自身のカスタムサブクラスのインスタンスを望むならば、これらプロトコルにおいてメソッドをオーバーライドしてください。

You may also wish to implement the hash method to make your subclass work well in collections. あなたはまた、hashメソッドを実装してあなたのサブクラスがコレクションにおいてうまく働くように希望するかもしれません。

Alternatives to Subclassing サブクラス作成の代わりとなるもの

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便宜メソッドを作成することでそれを格納および回収します。


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

Topics 話題

Working with Raw Values 生の値を扱う

Working with Pointer and Object Values ポインタおよびオブジェクト値を扱う

Working with Range Values 範囲値を扱う

Working with Foundation Geometry Values Foundation幾何学値を扱う

Working with CoreGraphics Geometry Values CoreGraphics幾何学値を扱う

Working with UIKit Geometry Values UIKit幾何学値を扱う

Working with CoreAnimation Transform Values CoreAnimation変換値を扱う

Working with Media Time Values メディア時間値を扱う

Working with Geographic Coordinate Values 地理座標値を扱う

Working with SceneKit Vector and Matrix Values SceneKitベクターと行列値を扱う

Comparing Value Objects 値オブジェクトを比較する

Instance Properties インスタンスプロパティ

Instance Methods インスタンス メソッド

Relationships 関係

Inherits From 継承元

Conforms To 次に準拠

See Also 参照

Value Wrappers and Transformations 値のラッパーと変換