Objective-cでサイズ変更可能なCGPointの配列を作成しようとしています。NSMutableArrayの使用を検討しましたが、サイズ変更ができないようです。他に使えるものはありますか?
ありがとうございました
Objective-cでサイズ変更可能なCGPointの配列を作成しようとしています。NSMutableArrayの使用を検討しましたが、サイズ変更ができないようです。他に使えるものはありますか?
ありがとうございました
を使用しますが、構造体をオブジェクトNSMutableArray
にボックス化するだけです。例:CGPoint
NSValue
CGPoint myPoint = {0,0};
CGPoint anotherPoint = {42, 69};
NSMutableArray * array = [NSMutableArray array];
[array addObject:[NSValue valueWithCGPoint:myPoint]];
[array addObject:[NSValue valueWithCGPoint:anotherPoint]];
CGPoint retrievedPoint = [[array objectAtIndex:0] CGPointValue];
+valueWithCGPoint:
メソッドとCGPointValue
メソッドは iPhone でのみ使用できることに注意してください。ただし、Mac でこれが必要な場合は、s を処理する同様の方法があり、aを anNSPoint
に変換するのは簡単です (キャストまたは使用できます)。CGPoint
NSPoint
NSPointFromCGPoint()
NSMutableArrayはオブジェクト用です。プレーンな古いデータ型の場合は、NSMutableDataと古き良きポインター型キャストを使用します。これは、サイズ変更可能な非構造化メモリバッファであり、PODのベクトルに必要なものです。静的型安全性に関しては、ObjectiveCはとにかくそれを提供しません。
編集:
初期サイズnのCGPoint構造体を使用した可変データオブジェクトの作成:
NSMutableData *Data = [NSMutableData dataWithLength: n*sizeof(CGPoint)];
CGPointptをバッファのi番目の位置に配置します。
CGPoint pt;
NSRange r = {i*sizeof(CGPoint), sizeof(CGPoint)};
[Data replaceBytesInRange: r withBytes:&pt];
i番目の位置からptへのCGPointの取得:
CGPoint pt;
NSRange r = {i*sizeof(CGPoint), sizeof(CGPoint)};
[Data getBytes: &pt range:r];
n個のオブジェクトで配列を拡張します。
[Data increaseLengthBy:n*sizeof(CGPoint)];
それをカバーすることを願っています。NSMutableDataリファレンスを参照し、すべてのNSDataメソッドがそれに適用されることに注意してください。