NSValue

Last-modified: 2014-01-12 (日) 11:05:13

スーパークラス: NSObject
適合プロトコル: NSSecureCoding, NSCopying, NSObject
フレームワーク: Foundation in OS X 10.0 and later, More related items


概要

NSValue オブジェクトは、1つのCまたはObject-Cデータを内包するのシンプルなコンテナです。これは、どんなタイプのスカラー値、int, float, char, ポインタ、構造体、id 型オブジェクトを保持できます。このクラスを使えば、先に挙げたデータ型を、要素がオブジェクトでなくてはならい NSArray や NSSet のようなコレクションクラスへ加えられるようになります。NSValue オブジェクトは、常に不可変です。

準拠するプロトコル

  • NSCoding
    encodeWiithCoder;
    initWithCoder:
  • NSCopying
    copyWithZone:

タスク

NSValueの生成

- initWithBytes:objCType:
+ valueWithBytes:objCType:
+ value:withObjCType:
+ valueWithNonretainedObject:
+ valueWithPointer:
+ valueWithPoint:
+ valueWithRange:

データへのアクセス

- getValue:
- nonretainedObjectValue
- objCType
- pointerValue
- rangeValue

オブジェクトとの比較

- isEqualToValue:

クラスメソッド

+ value:withObjCType:

引数 value を内包するNSValueオブジェクトを生成して返します。value は、与えられたObjective-C型 type であるものとしてエンコードされています。

+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type

Parameters
value
新しくNSValueオブジェクトとする値。

type
valueのObject-Cのデータ型。type'は、Objective-Cの@encode()コンパイラ指定子から作るべきで、C文字列でハードコートするべきではありません。

Return Value
valueを内包する、新しいNSValueオブジェクト。そのオブジェクトは、与えられたObjective-C でのデータ型, type, であるものとしてでエンコードされています。

Discussion
このメソッドは、valueWithBytes:objCTypeと同じ挙動をします。このメソッドは将来のリリースで廃止されるかもしれませんので、valueWithBytes:objCTypeメソッドを使うべきです。

Availability
OS X v10.0 以降
See Also
+ initWithBytes:objCType:
Declare in
NSValue.h

+ valueWithBytes:objCType:

引数 value を内包するNSValueオブジェクトを生成して返します。value は、与えられたObjective-C でのデータ型, type, であるものとしてエンコードされています。

+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type

Parameters
value
新しく NSValue}オブジェクトとする値。

type
valueに対応するObject-Cのデータ型。typeは、Objective-Cの@encode()コンパイラ指定子から作るべきで、C文字列でハードコートするべきではありません。

Return Value
valueを内包する、新しいNSValueオブジェクト。そのオブジェクトは、与えられた Objective-Cでのデータ型, typeであるものとしてエンコードされています。

Discussion'
 NSValue オブジェクトの作成についてと、コードサンプルについては、Number and Value Program Topics?を参照してください。

Availability
OS X v10.0 以降
See Also
- initWithBytes:objCType:
Declare in
NSValue.h

+ valueWithNonretainedObject:

引数のオブジェクトを内包するNSValueオブジェクトを生成して返す。

+ (NSValue *)valueWithNonretainedObject:(id)anObject

Parameters
anObject
新しいオブジェクトへ入れる値。

Return Value
anObjectを内包する新しいNSValueオブジェクト。

Discussion
このメソッドは、次の方法でのvalue:withObjCType:の呼び出しと同じです。

NSValue *theValue = [NSValue value:&anObject withObjCType:@encode(void *)];

強い参照を持たないようにしてコレクションへ格納したいとき、このメソッドは便利です。

Availability
iOS 2.0 以降
See Also
- nonretainedObjectValue
Declare in
NSValue.h

+ valueWithPointer:

引数のポインタを内包するNSValueオブジェクトを生成して返します。

+ (NSValue *)valueWithPointer:(const void *)aPointer

Parameters
aPointer
新しいオブジェクトへ入れる値。

Return Value
aPointerを内包する、新しいNSValueオブジェクト。

Discussion
このメソッドは、次の方法でのvalue:withObjCtTypeの呼び出しと同じです。

NSValue *theValue = [NSValue value:&aPointer withObjCType:@encode(void *)];

このメソッドは、aPointerの内容ををコピーしません。ですから、対応するNSValueオブジェクトが存在する間は、ポインターが指し示すメモリーを解放してはいけません。この点では、NSValueオブジェクトよりも[NSData?]オブジェクトの方が、任意のポインタへは向いているかもしれません。

Availability
iOS 2.0 以降
See Also
- pointerValue
Declare in
NSValue.h

+ ValueWithRange:

引数のNSRangeを内包するNSValueオブジェクトを生成して返します。

+ (NSValue *)valueWithRange:(NSRange)range

Parameters
range
新しいオブジェクトのための値。

Return Value
rangeの値を内包する、新しいNSValueオブジェクト。

Availability
iOS 2.0以降
See Also
- rangeValue
Declare in
NSRange.h

インスタンスメソッド

- getValue:

引数で与えられたバッファへ、レシーバが内包する値をコピーする。

- (void)getValue:(void *)buffer

Parameters
buffer
コピーを格納するレシーバの値をコピーするバッファ。このバッファは、値を保持するのに十分な大きさである必要があります。

Availability
iOS 2.0以降。
Related Sample Code
KeyboardAccessory
MultipeerGroupChat
Declared In
NSValue.h

- initWithBytes:objCType:

引数で与えられた値を内包するNSValuオブジェクトを初期化して返します。引数の値は、これも与えられた Objective-C型 typeであるものとしてエンコードされます。

- (id)initWithBytes:(const void *)value objCType:(const char *)type

Parameters
value
新しいNSValueオブジェクトに内包させる値。

type
valueのObjective-C型。typeは@encode()指定子で作るべきで、C文字列でハードコートしないべきでしょう。

Return Value
valueを内包する初期化されたNSValueは、Objective-C型のtypeであるものとしてエンコードされます。ここで返されるオブジェクトは、オリジナルのレシーバオブジェクトとは異なるものであるのがよいでしょう。

Discussion
NSValueオブジェクトを生成するほかの方法については、[Number and Value Programming Topics?]を参照するといいでしょう。

この書類には、NSValueクラスの指定イニシャライザについて紹介してあります。

Availability
iOS 2.0以降。
Declared In
NSValue.h

- isEqualToValue:

レシーバと引数のオブジェクトが等しいかどうかを、ブーリアン値で返します。

- (BOOL) isEqualToValue:(NSValue *)aValue

Parameters
aValue
レシーバと比較する値。

Return Value
レシーバとaValueとが等しいならYESを返し、そうでないならNOを返します。ここで等しいかどうかを決定するには、NSValueオブジェクト、クラス型、内包する値、これらがすべてが比較されます。

Availability
iOS 2.0以降。
Declared In
NSValue.h

- nonretainedObjectValue

レシーバの値をid型として返します。

- (id)nonretainedObjectValue

Return Value
id型としてのレシーバの値。レシーバがポインタデータで表現されたデータを保持するものとして生成されていないと、返り値は不定となります。

Availability
iOS 2.0以降
See Also
-getValue:
Declared In
NSValue.h

- objCType

レシーバが内包するデータのObjective-C型をしめすC文字列を返します。

- (const char *)objCType

Return Value
レシーバが内包するデータのObjective-C型をしめすC文字列。これは@encode()指定子でエンコードされたものです。

Availability
iOS 2.0以降
Declared In
NSValue.h

- pointerValue

voidを指すポインタとしてレシーバの値を返します。

- (void *)pointerValue

Return Value
voidを指すポインタとしてのレシーバ値。もし、レシーバがポインタデータで表現されたデータを保持するものとして生成されていないと、返り値は不定となります。

Availability
iOS 2.0 以降
See Also
- getValue:
Declared In
NSValue.h

- rangeValue

レシーバが保持するNSRange構造を返します。

- (NSRange)rangeValue

Return Value
レシーバが保持するNSRange構造。

Availability
iOS 2.0 以降
See Also
+ valueWithRange:
Declared In
NSRange.h

Document Revision History

This table describes the changes to NSValue Class Reference.

DateNotes
2007-10-31Corrected typographical errors.
2006-05-23First publication of this content as a separate document.

Copyright © 2007 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2007-10-31