1. ホーム
  2. ios

[解決済み] NSArrayにCGPointオブジェクトを簡単に追加するには?

2022-07-18 15:44:16

質問

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

どのように解決するのですか?

とは UIKit Apple は 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];