valueWithBytes:objCType:
NSValueオブジェクトを、値とオブジェクティブCタイプで作って返します
+(NSValue *)valueWithBytes:(const void *)value: objCType:(const char *)type:
解説
値オブジェクトを値とオブジェクティブCタイプで作って返します。
typeは@encode()コンパイラディレクティブで作成したものでなければなりません、C文字列でハードコーディングしてはいけません。
このメソッドはvalue:withObjCType:と同じメソッドです。
【オブジェクティブタイプ】
●@encode(NSRange) 範囲
●@encode(char *) C文字列
●@encode(int) 整数
[NSValue *value = [NSValue valueWithBytes: &aData objcType : @encode(typeof(aData) ) ];
返り値
( NSValue * )
値オブジェクト
引数
( const void * )value
値
( const char * )type
タイプ
フレームワーク
Foundation
クラス
NSValue
Class Methods
使用可能
10.0
参照
- initWithBytes:objCType:
例文
#import "MyObject.h" @implementation MyObject - (IBAction)myAction:(id)sender { //Rangeを渡す場合 NSRange aRange = {5, 15}; NSValue *theValue3 = [NSValue valueWithBytes:&aRange objCType:@encode(NSRange)]; NSRange bufferRange; [theValue3 getValue:&bufferRange]; NSLog(@"---%u,%u",bufferRange.location,bufferRange.length); //char*を渡す場合 char *aCString = "thestring"; NSValue *theValue = [NSValue valueWithBytes:&aCString objCType:@encode(char *)]; char *bufferChar[100]; [theValue getValue:&bufferChar]; NSLog(@"---%s",*bufferChar); //単にポインタを渡す場合 id anObject = @"Obj-C string"; NSValue *theValueOfPointer = [NSValue valueWithBytes:&anObject objCType:@encode(void *)]; id theObjPointer; [theValueOfPointer getValue:&theObjPointer]; NSLog(@"---%@",theObjPointer); //上の例を書き換えるとこうなる NSValue *theValueOfObj = [NSValue valueWithNonretainedObject:@"Obj-C string"]; id theObj; [theValueOfObj getValue:&theObj]; NSLog(@"---%@",theObj); //intを渡す場合 int intValue = 1234; NSValue *theValueOfInt = [NSValue valueWithBytes:&intValue objCType:@encode(int)]; int bufferInt; [theValueOfInt getValue:&bufferInt]; NSLog(@"---%d",bufferInt); //Sizeを渡す場合 NSSize aSize = NSMakeSize(1.0,2.0); NSValue *theValueOfSize = [NSValue valueWithBytes:&aSize objCType:@encode(NSSize)]; NSSize bufferSize; [theValueOfSize getValue:&bufferSize]; NSLog(@"---(%f,%f)",bufferSize.width,bufferSize.height); //Rectを渡す場合 NSRect aRect = NSMakeRect(1.0,2.0,300,400); NSValue *theValueOfRect = [NSValue valueWithBytes:&aRect objCType:@encode(NSRect)]; NSRect bufferRect; [theValueOfRect getValue:&bufferRect]; NSLog(@"---((%f,%f),(%f,%f))",bufferRect.origin.x,bufferRect.origin.y,bufferRect.size.width,bufferRect.size.height); } @end