CGPointオブジェクトをNSArrayに簡単に追加するにはどうすればよいですか?


129

「パス」のようなものを記述する約50のCGPointオブジェクトがあり、それらをNSArrayに追加したいと思います。これは、特定のインデックスに対応するCGPointを返すだけのメソッドになります。p1 = ...のような50個の変数を作成したくありません。p2 = ...など。オブジェクトでNSArrayを初期化するときに、これらのポイントを「瞬時に」定義できる簡単な方法はありますか?

回答:


324

UIKitAppleはにするCGPointのサポートを追加しNSValue、あなたが行うことができますので、:

NSArray *points = [NSArray arrayWithObjects:
                     [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
                     [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
                     nil];

CGPointと同じ数の[NSValue]インスタンスをリストし、リストをnilで終了します。この構造内のすべてのオブジェクトは自動解放されます。

反対に、配列から値を引き出すときは、次のようになります。

NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];

3
スカラー型、のNSNumberを見てのために...あなたはnumberWithBoolのようなコンストラクタが表示されます:numberWithInteger:numberWithFloat :, numberWithUnsignedShort:など
ジャレットハーディ

4
または、NSValueを直接使用することもできます:[NSValue valueWithBytes:&someStructSockaddr objCType:@encode(struct sockaddr)]たとえば。
Jim Dovey、

7

私はこれを使います:

配列を作成:

NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];

最初のCGPointオブジェクトを取得します。

CGPoint myPoint = [myArray[0] CGPointValue];


2

見てみましたCFMutableArrayか?それはあなたのためにうまくいくかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.